#!/usr/bin/perl
#
# This script file should be marked executable in order to be used from make!
#       Perforce sometimes loses this executable permission.
#
# Perl script with source definitions of all the per-language
# strings with i18n translations
#
# This script uses the utf-8 character encoding.  So to edit
# the strings you should be using a utf-8 capable editor.
# Without the correct editor mode non-ascii strings will
# not displayed correctly.
#
# Each string is represented by a macro, which is typically
# a small number.  That is an index into a table of strings,
# whose first index in the language and second is the string
# number.  The value of the table gives a 16 bit offset into
# a table of strings.
#
# If the table of strings is longer than 64K then upper bits
# of the string macro value are set to which 64K table is
# indexed.
#

use strict;
use utf8;
use Encode;

#
# List of enabled languages.  Comment any entry to disable
# that language from the application.  The order of entries
# are the order in which they are displayed.
#
my $LangEnabled = [
    { id => 'en', text => 'English' },
    { id => 'cn', text => 'Chinese' },
    { id => 'tw', text => 'TChinese' },
    # "Fenglish" exists purely to prove that multilanguage support
    # works... should be removed from production release.
    # It consists of english text prefixed with letter "f".
    #{ id => 'fe', text => 'Fenglish' },
];

#
# Strings: list of all messages that may be displayed on screen.
# Each has a translation for each supported language.
# The following general suffix convention is used here for naming
# the messages:
#       Menu_<menuname>_title  -- Menu title.
#               Will appear at very top of display, typically in small letters.
#       Menu_<menuname>_...  -- text that appears on a menu line.
#
my $Strings = {
    #
    # Language names
    #
    Lang_en => {
        en => 'English',
        cn => '英文',
        tw => '英文',
        fe => '',
    },
    Lang_cn => {
        en => 'Chinese',
        cn => '中文',
        tw => '中文',
        fe => '',
    },
    Lang_tw => {
        en => 'Chinese_tw',
        cn => '繁體中文',
        tw => '繁體中文',
        fe => '',
    },
    Lang_fe => {
        en => 'French',
        cn => '法文',
        tw => '法文',
        fe => '',
    },

    ####################################################################
    # ZCOM Main menu........Menu
    #                         |----Call log
    #                         |----Profiles
    #                         |----Setup
    #                         |----Network
    ####################################################################

    Zcom_Menu_Main_title => {
        en => 'Main Menu',
        cn => '主菜单',
        tw => '選單',
        fe => '',
    },
    Zcom_Menu_Call_Log => {
        en => 'Call log',
        cn => '通话记录',
        tw => '通話紀錄',
        fe => '',
    },
    Zcom_Menu_Profiles => {
        en => 'Profiles',
        cn => '情景模式',
        tw => '情境模式',
        fe => '',
    },
    Zcom_Menu_Setup => {
        en => 'Setup',
        cn => '电话设定',
        tw => '話機設定',
        fe => '',
    },
    Zcom_Menu_Network => {
        en => 'Network',
        cn => '网络设定',
        tw => '網路設定',
        fe => '',
    },

    #
    # ZCOM Calllog........Menu
    #                       |----Call log
    #

    Menu_CallList_title => {
        en => 'Call List',
        cn => '通话列表',
        tw => '通話列表',
        fe => '',
    },
    Menu_Calllog_title => {
        en => 'Call log',
        cn => '通话记录',
        tw => '通話紀錄',
        fe => '',
    },
    Menu_Calllog_Is_Empty => {
        en => 'Call log is empty!',
        cn => '通话记录为空!',
        tw => '無通話紀錄',
        fe => '',
    },
    Menu_Calllog_missedcalls => {
        en => 'Missed calls',
        cn => '未接来电',
        tw => '未接來電',
        fe => 'fMissed calls',
    },
    Menu_Calllog_receivedcalls => {
        en => 'Received calls',
        cn => '已接来电',
        tw => '已接來電',
        fe => 'fReceived calls',
    },
    Menu_Calllog_dialedcalls => {
        en => 'Dialed calls',
        cn => '已拨电话',
        tw => '已撥電話',
        fe => 'fDialed calls',
    },
    Menu_Calllog_deleteall=> {
        en => 'Delete all',
        cn => '全部删除',
        tw => '全部刪除',
        fe => 'fDelete all',
    },
    Calllog_deleteall_entry_query => {
        en => 'Are You Sure?  Delete all?',
        cn => '确定全部删除吗?',
        tw => '確定全部刪除嗎?',
        fe => 'fAre You Sure?  Delete all?',
    },
    Calllog_deleteall_entry_finish => {
        en => 'Delete all finish',
        cn => '全部删除已完成',
        tw => '已刪除完成',
        fe => 'fDelete all finish',
    },
    CallLog_missed => {
        en => 'Missed:',
        cn => '未接:',
        tw => '未接',
        fe => 'fMissed:',
    },
    CallLog_dialed => {
        en => 'Dialed:',
        cn => '已拨:',
        tw => '已撥',
        fe => 'fDialed:',
    },
    CallLog_from => {
        en => 'From:',
        cn => '来自:',
        tw => '來自',
        fe => 'fFrom:',
    },
    CallLog_length => {
        en => '%dh %dm %ds',
        cn => '%d时%d分%d秒',
        tw => '%d時%d分%d秒',
        fe => 'f%dh %dm %ds',
    },
    CallLog_copy_for_phone_book => {
        en => 'Copy for paste',
        cn => '复制粘帖',
        tw => '複製貼上',
        fe => 'fCopy for paste',
    },
    CallLog_delete_entry => {
        en => 'Delete entry',
        cn => '删除条目',
        tw => '刪除',
        fe => 'fDelete entry',
    },
    CallLog_callback => {
        en => 'Call',
        cn => '电话',
        tw => '電話',
        fe => 'fCall',
    },
    CallLog_empty => {
        en => 'Call log empty',
        cn => '通话记录空',
        tw => '無通話紀錄',
        fe => 'Call log empty',
    },
    CallLog_entry_unknown => {
        en => 'Unknown',
        cn => '未知',
        tw => '未知',
        fe => 'fUnknown',
    },
    CallLog_Entry_exists => {
        en => '(Used for %s !) ',
        cn => '(Used for %s !) ',
        tw => '(Used for %s !) ',
        fe => 'f(Used for %s !) ',
    },
    CallLog_Number_not_valid => {
        en => 'Number not valid',
        cn => '号码无效',
        tw => '號碼錯誤',
        fe => 'fNumber not valid',
    },
    Calllog_Select_talk => {
        en => 'Talk',
        cn => '通话',
        tw => '通話',
        fe => 'fTalk',
    },
    Calllog_Select_delete => {
        en => 'Delete',
        cn => '删除',
        tw => '刪除',
        fe => 'fDelete',
    },
    Calllog_Select_delete_all => {
        en => 'Delete all',
        cn => '全部删除',
        tw => '全部刪除',
        fe => 'fDelete all',
    },
    Calllog_Select_save => {
        en => 'Save',
        cn => '保存',
        tw => '儲存',
        fe => 'fSave',
    },
    CallList_empty => {
        en => 'Call list is empty',
        cn => '通话列表为空',
        tw => '無通話列表',
        fe => 'fCall list is empty',
    },
    CallLog_MissedCall_Empty => {
        en => 'No missed calls.',
        cn => '无未接电话。',
        tw => '無未接來電',
        fe => 'fNo missed calls.',
    },
    CallLog_DialedCall_Empty => {
        en => 'No dialed calls.',
        cn => '无已拨电话。',
        tw => '無已撥電話',
        fe => 'fNo dialed calls.',
    },
    CallLog_ReceivedCall_Empty => {
        en => 'No received calls.',
        cn => '无已接电话。',
        tw => '無以接電話',
        fe => 'fNo received calls.',
    },
    DeleteAll_Mission_Confirm => {
        en => 'Press YES to delete all records.',
        cn => '按确定键删除所有纪录。',
        tw => '按確定鍵刪除所有紀錄',
        fe => '',
    },
    Delete_Mission_Confirm => {
        en => 'Press YES to delete the record.',
        cn => '按确定键删除该纪录。',
        tw => '按確定鍵刪除該項紀錄',
        fe => '',
    },

    #
    # ZCOM Profiles........Menu
    #                        |----Profiles
    #

    Zcom_Profile_Add_New => {
        en => 'Add to Profile',
        cn => '新建情景模式',
        tw => '建立情境模式',
        fe => '',
    },
    Zcom_Profile_Add_New_Fail_Name_Reduplicate => {
        en => 'Profile Name Conflict',
        cn => '该名称已存在!',
        tw => '名稱重複!',
        fe => '',
    },
    Zcom_Profile_Title_Rename => {
        en => 'Rename',
        cn => '重命名',
        tw => '重新命名',
        fe => '',
    },
    Zcom_Profile_Title_Rename_Conflict => {
        en => 'Profile name already exist!',
        cn => '该名称已存在!',
        tw => '該名稱已存在',
        fe => '',
    },
    Zcom_Profile_names => {
        en => [ 'Normal', 
                'Meeting', 
                'Outdoor', 
                'User 1', 
                'User 2',
                'User 3', 
                'User 4', 
                'User 5', 
                'User 6', 
                'User 7'],
        cn => [ '标准',
                '会议',
                '户外',
                '用户 1', 
                '用户 2',
                '用户 3', 
                '用户 4', 
                '用户 5', 
                '用户 6', 
                '用户 7'],
        tw => [ '標準',
                '會議',
                '戶外',
                '用户 1', 
                '用户 2',
                '用户 3', 
                '用户 4', 
                '用户 5', 
                '用户 6', 
                '用户 7'],
        fe => [ '', 
                '', 
                '', 
                '', 
                '',
                '', 
                '', 
                '', 
                '', 
                ''],
    },
    Zcom_Profile_Personalise_Tone_setting => {
        en => 'Tone setting',
        cn => '声音设置',
        tw => '響鈴設定',
        fe => '',
    },
    Zcom_Profile_Personalise_Tone_setting_Ring => {
        en => 'Ring tones',
        cn => '铃声类型',
        tw => '鈴聲類型',
        fe => '',
    },
    Zcom_Profile_Personalise_Tone_setting_Message => {
        en => 'Message tones',
        cn => '短信提示音',
        tw => '簡訊提示音',
        fe => '',
    },
    Zcom_Profile_Personalise_Tone_setting_Key => {
        en => 'Key tone',
        cn => '按键音',
        tw => '按鍵音',
        fe => '',
    },
    Zcom_Profile_Key_Tone_ON => {
        en => 'ON',
        cn => '打开',
        tw => '啟用',
        fe => '',
    },
    Zcom_Profile_Key_Tone_OFF => {
        en => 'OFF',
        cn => '关闭',
        tw => '關閉',
        fe => '',
    },
    Zcom_Profile_Personalise_Volume => {
        en => 'Volume',
        cn => '音量',
        tw => '音量',
        fe => '',
    },
    Zcom_Profile_Personalise_Volume_Ring => {
        en => 'Ring Vol.',
        cn => '铃声音量',
        tw => '鈴聲音量',
        fe => '',
    },
    Zcom_Profile_Personalise_Volume_Receiver => {
        en => 'Receiver Vol.',
        cn => '接听音量',
        tw => '接聽音量',
        fe => '',
    },
    Zcom_Profile_Personalise_Volume_Speaker => {
        en => 'Speaker Vol.',
        cn => '主叫音量',
        tw => '免持聽筒音量',
        fe => '',
    },
    Zcom_Profile_Personalise_Volume_Key => {
        en => 'Key tone Vol.',
        cn => '按键音量',
        tw => '按鍵音量',
        fe => '',
    },
    Zcom_Profile_Personalise_Ring_mode => {
        en => 'Ring mode',
        cn => '响铃方式',
        tw => '來電模式',
        fe => '',
    },
    Zcom_Profile_Personalise_Ringmode_RingOnly => {
        en => 'Ring only',
        cn => '响铃',
        tw => '響鈴',
        fe => '',
    },
    Zcom_Profile_Personalise_Ringmode_Vibrate => {
        en => 'Vibrate',
        cn => '振动',
        tw => '震動',
        fe => '',
    },
    Zcom_Profile_Personalise_Ringmode_Vibrate_And_Ring => {
        en => 'Ring and Vib.',
        cn => '边响铃边振动',
        tw => '邊響鈴邊震動',
        fe => '',
    },
    Zcom_Profile_Personalise_Ringmode_Vibrate_Then_Ring => {
        en => 'Vib. then Ring',
        cn => '先振动后响铃',
        tw => '先震動後響鈴',
        fe => '',
    },
    Zcom_Profile_Personalise_Silent => {
        en => 'Silent',
        cn => '静音',
        tw => '靜音',
        fe => '',
    },
    Zcom_Profile_Active_Prompt => {
        en => '<%s> Activated',
        cn => '<%s> 被激活',
        tw => '啟用',
        fe => '',
    },
    PhoneSetup_ProfilesSetup_title => {
        en => 'Profiles Setup',
        cn => '情景模式',
        tw => '情境模式',
        fe => 'fProfiles Setup', 
    },
    PhoneSetup_Profiles_activate => {
        en => 'Activate',
        cn => '激活',
        tw => '啟用',
        fe => 'fActivate',
    },
    PhoneSetup_Profiles_personalize => {
        en => 'Personalize',
        cn => '自定义',
        tw => '個人化',
        fe => 'fPersonalize',
    },
    PhoneSetup_Profiles_rename => {
        en => 'Rename',
        cn => '重命名',
        tw => '重新命名',
        fe => 'fRename',
    },
    PhoneSetup_Profiles_delete => {
        en => 'Delete',
        cn => '删除',
        tw => '刪除',
        fe => 'fDelete',
    },
    PhoneSetup_Profiles_delete_prompt => {
        en => 'Delete Profile?',
        cn => '删除情景模式?',
        tw => '刪除情境模式?',
        fe => '',
    },

    ############################################################
    # ZCOM Setup........Menu
    #                     |----Setup
    #                            |----Data/Time
    #                            |----Phone Setting
    #                            |----Information
    ############################################################

    #
    # ZCOM Setup........Menu
    #                     |----Setup
    #                            |----Data/Time

    Menu_Setup_datetime_title => {
        en => 'Set Time/Date',
        cn => '时间设置',
        tw => '時間設定',
        fe => 'fSet Time/Date',
    },
    Menu_Setup_datetime => {
        en => 'Date/Time',
        cn => '日期时间',
        tw => '日期與時間',
        fe => 'fDate/Time',
    },
    ClockTimeZone_title => {
        en => 'TimeZone',
        cn => '时区',
        tw => '時區',
        fe => 'fTimeZone',
    },
    Menu_clock_set_timezone => {
        en => 'Set Time Zone',
        cn => '设置时区',
        tw => '時區設定',
        fe => 'fSet Time Zone',
    },
    Menu_Setup_alarmclock => {
        en => 'Alarm Clock',
        cn => '闹钟',
        tw => '鬧鈴',
        fe => 'fAlarm Clock',
    },
    Menu_Setup_datetime => {
        en => 'DateTime',
        cn => '日期时间',
        tw => '日期與時間',
        fe => 'fDateTime',
    },

    # TimeZoneName
    TimeZoneName_12 => {
        en => 'International Date Line West',
        cn => '国际日期西部变改线',
        tw => '國際日期變更線',
        fe => 'fInternational Date Line West',
    },
    TimeZoneName_11 => {
        en => 'Midway Island, Samoa',
        cn => 'Midway Island, Samoa',
        tw => '',
        fe => 'fMidway Island, Samoa',
    },
    TimeZoneName_10 => {
        en => 'Hawaii',
        cn => '夏威夷',
        tw => '',
        fe => 'fHawaii',
    },
    TimeZoneName_9 => {
        en => 'Alaska',
        cn => '阿拉斯加',
        tw => '',
        fe => 'fAlaska',
    },
    TimeZoneName_8 => {
        en => 'Pacific Time: Tjuana',
        cn => '太平洋时间: Tjuana',
        tw => '',
        fe => 'fPacific Time: Tjuana',
    },
    TimeZoneName_7 => {
        en => 'Arizona',
        cn => '亚利桑那',
        tw => '',
        fe => 'fArizona',
    },
    TimeZoneName_6 => {
        en => 'Central America',
        cn => '中美洲',
        tw => '',
        fe => 'fCentral America',
    },
    TimeZoneName_5 => {
        en => 'Bogota, Lima, Quito',
        cn => 'Bogota, Lima, Quito',
        tw => '',
        fe => 'fBogota, Lima, Quito',
    },
    TimeZoneName_4 => {
        en => 'Atlantic Time',
        cn => '大西洋时间',
        tw => '',
        fe => 'fAtlantic Time',
    },
    TimeZoneName_3 => {
        en => 'Newfoundland',
        cn => '纽芬兰',
        tw => '',
        fe => 'fNewfoundland',
    },
    TimeZoneName_2 => {
        en => 'Mid-Aliantic',
        cn => 'Mid-Aliantic',
        tw => '',
        fe => 'fMid-Aliantic',
    },
    TimeZoneName_1 => {
        en => 'Cape Verde Is.',
        cn => 'Cape Verde Is.',
        tw => '',
        fe => 'fCape Verde Is.',
    },
    TimeZoneName0 => {
        en => 'Greenwich Mean Time : London',
        cn => '格林威治标准时间: 伦敦',
        tw => '',
        fe => 'fGreenwich Mean Time : London',
    },
    TimeZoneName1 => {
        en => 'Amsterdam, Lisbon',
        cn => 'Amsterdam, Lisbon',
        tw => '',
        fe => 'fAmsterdam, Lisbon',
    },
    TimeZoneName2 => {
        en => 'Cairo, Kyiv, Sofia',
        cn => 'Cairo, Kyiv, Sofia',
        tw => '',
        fe => 'fCairo, Kyiv, Sofia',
    },
    TimeZoneName3 => {
        en => 'Kuwait, Riyadh, Tehran',
        cn => 'Kuwait, Riyadh, Tehran',
        tw => '',
        fe => 'fKuwait, Riyadh, Tehran',
    },
    TimeZoneName4 => {
        en => 'Baku, Muscat, Yerevan',
        cn => 'Baku, Muscat, Yerevan',
        tw => '',
        fe => 'fBaku, Muscat, Yerevan',
    },
    TimeZoneName5 => {
        en => 'Islamabad, Karaci, Tashkent',
        cn => 'Islamabad, Karaci, Tashkent',
        tw => '',
        fe => 'fIslamabad, Karaci, Tashkent',
    },
    TimeZoneName6 => {
        en => 'Almaty, Novosibirsk, Astana',
        cn => 'Almaty, Novosibirsk, Astana',
        tw => '',
        fe => 'fAlmaty, Novosibirsk, Astana',
    },
    TimeZoneName7 => {
        en => 'Hanoi, Jakarta, Krasnoyarsk',
        cn => 'Hanoi, Jakarta, Krasnoyarsk',
        tw => '',
        fe => 'fHanoi, Jakarta, Krasnoyarsk',
    },
    TimeZoneName8 => {
        en => 'Beijing, HongKong, Singapore',
        cn => 'Beijing, HongKong, Singapore',
        tw => '',
        fe => 'fBeijing, HongKong, Singapore',
    },
    TimeZoneName9 => {
        en => 'Sapporo, Tokyo',
        cn => 'Sapporo, Tokyo',
        tw => '',
        fe => 'fSapporo, Tokyo',
    },
    TimeZoneName10 => {
        en => 'Sydney, Guam, Hobart',
        cn => 'Sydney, Guam, Hobart',
        tw => '',
        fe => 'fSydney, Guam, Hobart',
    },
    TimeZoneName11 => {
        en => 'New Caledonia, Magadan',
        cn => 'New Caledonia, Magadan',
        tw => '',
        fe => 'fNew Caledonia, Magadan',
    },
    TimeZoneName12 => {
        en => 'Wellington, Kamchatka',
        cn => 'Wellington, Kamchatka',
        tw => '',
        fe => 'fWellington, Kamchatka',
    },
    TimeZoneName13 => {
        en => 'Nuku alofa',
        cn => 'Nuku alofa',
        tw => '',
        fe => 'fNuku alofa',
    },
    # GMTInfo
    GMT_12 => {   # Typically this will be the carrier name
        en => 'GMT-12',
        cn => 'GMT-12',
        tw => '',
        fe => '',
    },
    GMT_11 => {   # Typically this will be the carrier name
        en => 'GMT-11',
        cn => 'GMT-11',
        tw => '',
        fe => '',
    },
    GMT_10=> {   # Typically this will be the carrier name
        en => 'GMT-10',
        cn => 'GMT-10',
        tw => '',
        fe => '',
    },
    GMT_9 => {   # Typically this will be the carrier name
        en => 'GMT-9',
        cn => 'GMT-9',
        tw => '',
        fe => '',
    },
    GMT_8 => {   # Typically this will be the carrier name
        en => 'GMT-8',
        cn => 'GMT-8',
        tw => '',
        fe => '',
    },
    GMT_7 => {   # Typically this will be the carrier name
        en => 'GMT-7',
        cn => 'GMT-7',
        tw => '',
        fe => '',
    },
    GMT_6 => {   # Typically this will be the carrier name
        en => 'GMT-6',
        cn => 'GMT-6',
        tw => '',
        fe => '',
    },
    GMT_5 => {   # Typically this will be the carrier name
        en => 'GMT-5',
        cn => 'GMT-5',
        tw => '',
        fe => '',
    },
    GMT_4 => {   # Typically this will be the carrier name
        en => 'GMT-4',
        cn => 'GMT-4',
        tw => '',
        fe => '',
    },
    GMT_3 => {   # Typically this will be the carrier name
        en => 'GMT-3',
        cn => 'GMT-3',
        tw => '',
        fe => '',
    },
    GMT_2 => {   # Typically this will be the carrier name
        en => 'GMT-2',
        cn => 'GMT-2',
        tw => '',
        fe => '',
    },
    GMT_1 => {   # Typically this will be the carrier name
        en => 'GMT-1',
        cn => 'GMT-1',
        tw => '',
        fe => '',
    },
    GMT0 => {   # Typically this will be the carrier name
        en => 'GMT0',
        cn => 'GMT0',
        tw => '',
        fe => '',
    },
    GMT1 => {   # Typically this will be the carrier name
        en => 'GMT+1',
        cn => 'GMT+1',
        tw => '',
        fe => '',
    },
    GMT2 => {   # Typically this will be the carrier name
        en => 'GMT+2',
        cn => 'GMT+2',
        tw => '',
        fe => '',
    },
    GMT3 => {   # Typically this will be the carrier name
        en => 'GMT+3',
        cn => 'GMT+3',
        tw => '',
        fe => '',
    },
    GMT4 => {   # Typically this will be the carrier name
        en => 'GMT+4',
        cn => 'GMT+4',
        tw => '',
        fe => '',
    },
    GMT5 => {   # Typically this will be the carrier name
        en => 'GMT+5',
        cn => 'GMT+5',
        tw => '',
        fe => '',
    },
    GMT6 => {   # Typically this will be the carrier name
        en => 'GMT+6',
        cn => 'GMT+6',
        tw => '',
        fe => '',
    },
    GMT7 => {   # Typically this will be the carrier name
        en => 'GMT+7',
        cn => 'GMT+7',
        tw => '',
        fe => '',
    },
    GMT8 => {   # Typically this will be the carrier name
        en => 'GMT+8',
        cn => 'GMT+8',
        tw => '',
        fe => '',
    },
    GMT9 => {   # Typically this will be the carrier name
        en => 'GMT+9',
        cn => 'GMT+9',
        tw => '',
        fe => '',
    },
    GMT10 => {   # Typically this will be the carrier name
        en => 'GMT+10',
        cn => 'GMT+10',
        tw => '',
        fe => '',
    },
    GMT11 => {   # Typically this will be the carrier name
        en => 'GMT+11',
        cn => 'GMT+11',
        tw => '',
        fe => '',
    },
    GMT12 => {   # Typically this will be the carrier name
        en => 'GMT+12',
        cn => 'GMT+12',
        tw => '',
        fe => '',
    },

    # Clock submenu
    Menu_clock_auto_mode => {
        en => 'Auto Clock Sync.',
        cn => '时钟同步',
        tw => '網路時間同步',
        fe => 'fAuto Clock Sync.',
    },
    Menu_set_time => {
        en => 'Time',
        cn => '设置时间',
        tw => '設置時間',
        fe => 'fTime',
    },
    Menu_set_date => {
        en => 'Date',
        cn => '设置日期',
        tw => '設置日期',
        fe => 'fDate',
    },
    Menu_set_date_error => {
        en => 'Invalid Date',
        cn => '无效日期',
        tw => '無效的日期',
        fe => '',
    },
    Menu_ntp_server => {
        en => 'NTP Server',
        cn => 'NTP服务器',
        tw => '網路時間伺服器 ',
        fe => 'fNTP Server',
    },

    # Clock manual mode submenu
    Menu_clock_auto_mode_title => {
        en => 'Auto clock set',
        cn => '自动时钟设置',
        tw => '自動時間設定',
        fe => 'fAuto clock set',
    },
    Menu_clock_auto_mode_enable => {
        en => 'Enable',
        cn => '打开',
        tw => '啟用',
        fe => 'fEnable',
    },
    Menu_clock_auto_mode_disable => {
        en => 'Disable',
        cn => '关闭',
        tw => '關閉',
        fe => 'fDisable',
    },

    # Clock set time/date screens
    Menu_clock_enter_new_time => {
        en => '24 hour time',
        cn => '24小时制',
        tw => '小時制',
        fe => 'f24 hour time',
    },
    Menu_clock_enter_new_date => {
        en => 'Month/Day/Year',
	cn => '月/日/年',
        tw => '月/日/年',
        fe => 'fMonth/Day/Year',
    },

    #
    # ZCOM Phone Setting........Menu
    #                             |----Setup
    #                                    |----Phone Setting
    #

    Zcom_Menu_PhoneSetting_title => {
        en => 'Phone Setting',
        cn => '电话设置',
        tw => '話機設定',
        fe => '',
    },
    Zcom_Menu_PhoneSetting_Language => {
        en => 'Language',
        cn => '语言',
        tw => '語言',
        fe => '',
    },
    # Canceled in new version. 
    Zcom_Menu_PhoneSetting_CallerID => {
        en => 'Caller ID',
        cn => '主叫号',
        tw => '來電顯示  ',
        fe => '',
    },
    Zcom_Menu_PhoneSetting_CallerID_On=> {
        en => 'ON',
        cn => '打开',
        tw => '啟用',
        fe => 'fON',
    },
    Zcom_Menu_PhoneSetting_CallerID_Off=> {
        en => 'OFF',
        cn => '关闭',
        tw => '關閉',
        fe => 'fOFF',
    },
    Zcom_Menu_PhoneSetting_PhoneLock_Delay => {
        en => 'Phone lock',
        cn => '电话锁',
        tw => '按鍵鎖',
        fe => '',
    },
    Zcom_Menu_PhoneSetting_PhoneLock_Delay_Off => {
        en => 'OFF',
        cn => '关闭',
        tw => '關閉',
        fe => '',
    },
    Zcom_Menu_PhoneSetting_PhoneLock_Delay_15s => {
        en => '15s',
        cn => '15秒',
        tw => '秒',
        fe => '',
    },
    Zcom_Menu_PhoneSetting_PhoneLock_Delay_30s => {
        en => '30s',
        cn => '30秒',
        tw => '',
        fe => '',
    },
    Zcom_Menu_PhoneSetting_PhoneLock_Delay_60s => {
        en => '60s',
        cn => '60秒',
        tw => '',
        fe => '',
    },
    Zcom_Menu_PhoneSetting_PhoneLock_Delay_120s => {
        en => '120s',
        cn => '120秒',
        tw => '',
        fe => '',
    },
    Zcom_Menu_PhoneSetting_Backlight_Delay => {
        en => 'Backlight',
        cn => '背景灯',
        tw => '背景燈',
        fe => '',
    },
    Zcom_Menu_PhoneSetting_Backlight_Delay_Off => {
        en => 'OFF',
        cn => '关闭',
        tw => '關閉',
        fe => '',
    },
    Zcom_Menu_PhoneSetting_Backlight_Delay_4s => {
        en => '4s',
        cn => '4秒',
        tw => '秒',
        fe => '',
    },
    Zcom_Menu_PhoneSetting_Backlight_Delay_7s => {
        en => '7s',
        cn => '7秒',
        tw => '',
        fe => '',
    },
    Zcom_Menu_PhoneSetting_Backlight_Delay_10s => {
        en => '10s',
        cn => '10秒',
        tw => '',
        fe => '',
    },
    Zcom_Menu_PhoneSetting_Backlight_Delay_Always_On => {
        en => 'Always On',
        cn => '一直打开',
        tw => '永遠啟用',
        fe => '',
    },
    Zcom_Menu_PhoneSetting_Display_Contrast => {
        en => 'Contrast',
        cn => '对比度',
        tw => '對比度',
        fe => '',
    },
    Zcom_Menu_PhoneSetting_QuickButton => {
        en => 'Quick button',
        cn => '快捷按键',
        tw => '快速鍵',
        fe => '',
    },
    Zcom_Menu_PhoneSetting_QuickButton_Up_Button => {
        en => 'Up Button',
        cn => '向上按键',
        tw => '上鍵',
        fe => '',
    },
    Zcom_Menu_PhoneSetting_QuickButton_Down_Button => {
        en => 'Down Button',
        cn => '向下按键',
        tw => '下鍵',
        fe => '',
    },
    Zcom_Menu_PhoneSetting_QuickButton_Configuration_Information => {
        en => 'Information',
        cn => '状态信息',
	tw => '狀態資訊',
        fe => '',
    },
#    Zcom_Menu_PhoneSetting_QuickButton_Configuration_P2P_Dialing => {
#        en => 'P2P Dialing',
#        cn => 'P2P拨号',
#        tw => '',
#        fe => '',
#    },
    Zcom_Menu_PhoneSetting_QuickButton_Configuration_Speaker_Volume => {
        en => 'Speaker Volume',
        cn => '主叫音量',
        tw => '免持音量',
        fe => '',
    },
    Zcom_Menu_PhoneSetting_QuickButton_Configuration_Receiver_Volume => {
        en => 'Receiver Volume',
        cn => '接听音量',
        tw => '手持音量',
        fe => '',
    },
    Zcom_Menu_PhoneSetting_QuickButton_Configuration_Profiles => {
        en => 'Profiles',
        cn => '情景模式',
        tw => '情境模式',
        fe => '',
    },
    Zcom_Menu_PhoneSetting_PowerSaving_Status => {
        en => 'Power Saving',
        cn => '省电模式',
        tw => '省電模式',
        fe => '',
    },
    Zcom_Menu_PhoneSetting_PowerSaving_Status_Off => {
        en => 'OFF',
        cn => '关闭',
        tw => '關閉',
        fe => '',
    },
    Zcom_Menu_PhoneSetting_PowerSaving_Status_On => {
        en => 'ON',
        cn => '打开',
        tw => '啟用',
        fe => '',
    },
    Zcom_Menu_PhoneSetting_RemoteAccess_Status => {
        en => 'Web Config',
        cn => '网页配置',
        tw => '網頁設定',
        fe => '',
    },
    Zcom_Menu_PhoneSetting_RemoteAccess_Status_Off => {
        en => 'OFF',
        cn => '关闭',
        tw => '關閉',
        fe => '',
    },
    Zcom_Menu_PhoneSetting_RemoteAccess_Status_On => {
        en => 'ON',
        cn => '打开',
        tw => '啟用',
        fe => '',
    },
    Zcom_Menu_PhoneSetting_RemoteAccess_Status_On_Warning => {
        en => 'Warning:        Web config will reduce battery life!',
        cn => '警告:           打开网页配置会加快耗电!',
        tw => '警告: 啟用網頁設定會增加耗電!',
        fe => '',
    },
    Zcom_Menu_WebConfig_Enable_Disable => {
        en => 'Disable Web Config?',
        cn => '是否关闭网页配置?',
	tw => '是否關閉網頁設定',
        fe => '',
    },
    Zcom_Menu_PhoneSetting_FW_Upgrade => {
        en => 'FW Upgrade',
        cn => '固件升级',
        tw => '韌體升級',
        fe => '',
    },
    Zcom_Menu_PhoneSetting_FW_Upgrade_Now => {
        en => 'Upgrade Now',
        cn => '现在升级',
        tw => '升級中',
        fe => '',
    },
    Zcom_Menu_PhoneSetting_FW_Upgrade_Server_Address => {
        en => 'Server Address',
        cn => '服务器地址',
        tw => '伺服器地址',
        fe => '',
    },
    Zcom_Menu_PhoneSetting_FW_Upgrade_Server_Port => {
        en => 'Server Port',
        cn => '服务器端口',
        tw => '伺服器端口',
        fe => '',
    },
    Zcom_Menu_PhoneSetting_RestoreFactory => {
        en => 'Restore factory',
        cn => '恢复出厂设置',
        tw => '恢復出廠設定',
        fe => '',
    },
    Zcom_Menu_PhoneSetting_RestoreFactory_Question => {
        en => 'Are you sure,  Reset to default?',
        cn => '确定要恢复出厂设置?',
        tw => '確定要恢復出廠設定?',
        fe => '',
    },
    Zcom_Menu_PhoneSetting_RestoreFactory_Finish => {
        en => 'Restore factory finish!',
        cn => '恢复出厂模式完成',
        tw => '恢復出廠設置完成',
        fe => '',
    },
    # Remote access menu
    Menu_Setup_RemoteAccess_title => {
        en => 'Remote access',
        cn => '远程访问',
        tw => '',
        fe => 'fRemote access',
    },
    Menu_Setup_RemoteAccess_disable => {
        en => 'Disable',
        cn => '关闭',
        tw => '關閉',
        fe => 'fDisable',
    },
    Menu_Setup_RemoteAccess_enable => {
        en => 'Enable',
        cn => '打开',
        tw => '啟用',
        fe => 'fEnable',
    },

	Menu_Setup_RemoteAccess_Enabled => {
        en => 'Access Address',
        cn => '访问地址',
        tw => '',
        fe => 'fAccess Address',
    },

    #
    # ZCOM Call Setting ........Menu
    #                             |----Setup
    #                                    |----Call Setting

    Zcom_Menu_CallSetting_title => {
        en => 'Call Setting',
        cn => '呼叫设置',
        tw => '呼叫設定',
        fe => '',
    },
    ZCOM_Send_Caller_ID => {
        en => 'Send Caller ID',
        cn => '发送主叫号',
        tw => '發送來電顯示',
        fe => '',
    },
    ZCOM_Send_Caller_ID_Off => {
        en => 'OFF',
        cn => '关闭',
        tw => '關閉',
        fe => '',
    },
    ZCOM_Send_Caller_ID_On => {
        en => 'ON',
        cn => '打开',
        tw => '啟用',
        fe => '',
    },

    #
    # ZCOM Information ........Menu
    #                             |----Setup
    #                                    |----Information

    Zcom_Menu_Information_title => {
        en => 'Information',
        cn => '状态信息',
        tw => '狀態資訊',
        fe => '',
    },
    Zcom_Menu_Information_tcpip => {
        en => 'TCP/IP',
        cn => 'IP信息',
        tw => 'IP資訊',
        fe => '',
    },
    Zcom_Menu_Information_wlan => {
        en => 'WLAN',
        cn => '无线',
        tw => '無線網路資訊',
        fe => '',
    },
    Zcom_Menu_Information_sip => {
        en => 'SIP',
        cn => 'SIP',
        tw => 'SIP服務器資訊',
        fe => '',
    },
    Zcom_Menu_Information_HW_Info => {
        en => 'HW',
        cn => '硬件',
        tw => '硬體資訊',
        fe => '',
    },
    Zcom_Menu_Information_log => {
        en => 'Log',
        cn => '日志',
        tw => '紀錄',
        fe => '',
    },
    Zcom_Menu_Information_tcpip_IP_Address => {
        en => 'IP Address',
        cn => 'IP地址',
        tw => '網路地址',
        fe => '',
    },
    Zcom_Menu_Information_tcpip_Mask => {
        en => 'Subnet Mask',
        cn => '子网掩码',
        tw => '子網路遮罩',
        fe => '',
    },
    Zcom_Menu_Information_tcpip_Gateway => {
        en => 'Gateway',
        cn => '网关',
        tw => '閘道器 ',
        fe => '',
    },
    Zcom_Menu_Information_tcpip_DNS => {
        en => 'DNS',
        cn => '域名解析服务器',
        tw => '域名解析服務器',
        fe => '',
    },
    Zcom_Menu_Information_wlan_ssid => {
        en => 'SSID',
        cn => 'SSID',
        tw => '',
        fe => '',
    },
    Zcom_Menu_Information_wlan_bssid => {
        en => 'BSSID',
        cn => 'BSSID',
        tw => '',
        fe => '',
    },
    Zcom_Menu_Information_wlan_channel => {
        en => 'Channel',
        cn => '信道',
        tw => '頻道',
        fe => '',
    },
    Zcom_Menu_Information_wlan_security => {
        en => 'Security',
        cn => '安全设置',
        tw => '安全設定',
        fe => '',
    },
    Zcom_Menu_Information_wlan_Open => {
        en => 'Open',
        cn => 'Open',
        tw => '',
        fe => '',
    },
    Zcom_Menu_Information_wlan_WEP => {
        en => 'WEP',
        cn => 'WEP',
        tw => '',
        fe => '',
    },
    Zcom_Menu_Information_wlan_WPA_PSK => {
        en => 'WPA-PSK',
        cn => 'WPA-PSK',
        tw => '',
        fe => '',
    },
    Zcom_Menu_Information_wlan_WPA2_PSK => {
        en => 'WPA2-PSK',
        cn => 'WPA2-PSK',
        tw => '',
        fe => '',
    },
    Zcom_Menu_Information_wlan_WPA => {
        en => 'WPA',
        cn => 'WPA',
        tw => '',
        fe => '',
    },
    Zcom_Menu_Information_wlan_WPA2 => {
        en => 'WPA2',
        cn => 'WPA2',
        tw => '',
        fe => '',
    },
    Zcom_Menu_Information_wlan_Shared => {
        en => 'Shared',
        cn => '共享',
        tw => '',
        fe => '',
    },
    Zcom_Menu_Information_wlan_Unsupported => {
        en => 'Unsupported',
        cn => '未支持',
        tw => '未支持',
        fe => 'fUnsupported',
    },

    Zcom_Menu_Information_sip_phone_number => {
        en => 'Phone Number',
        cn => '电话号码',
        tw => '電話號碼',
        fe => '',
    },
    Zcom_Menu_Information_sip_server => {
        en => 'SIP Server',
        cn => 'SIP服务器',
        tw => 'SIP伺服器',
        fe => '',
    },
    Zcom_Menu_Information_sip_proxy => {
        en => 'SIP Proxy',
        cn => 'SIP代理',
        tw => 'SIP代理器',
        fe => '',
    },
    Zcom_Menu_Information_sip_stun_server => {
        en => 'Stun Server',
        cn => 'Stun服务器',
        tw => 'Stun伺服器',
        fe => '',
    },
    Zcom_Menu_Information_sip_outbound_proxy => {
        en => 'Outbound Proxy',
        cn => 'Outbound代理',
        tw => 'Outbound代理器',
        fe => '',
    },
    Zcom_Menu_Information_sip_expire => {
        en => 'Expire',
        cn => '过期时间',
        tw => '過期時間',
        fe => '',
    },
    Zcom_Menu_Information_HW_Battery => {
        en => 'Battery Status',
        cn => '电池状态',
        tw => '電池狀態',
        fe => '',
    },
    Zcom_Menu_Information_HW_Storage => {
        en => 'Storage Free',
        cn => '存储空间',
        tw => '剩餘空間',
        fe => '',
    },
    Zcom_Menu_Information_HW_Storage_Percent => {
        en => '%d%% Free',
        cn => '剩余 %d%%',
        tw => '剩餘',
        fe => '',
    }, 
    Zcom_Menu_Information_HW_Storage_Free => {
        en => 'Free: %d.%d KB',
        cn => '剩余: %d.%d KB',
        tw => '剩餘',
        fe => '',
    }, 
    Zcom_Menu_Information_HW_Storage_Total => {
        en => 'Total: %d.%d KB',
        cn => '总共: %d.%d KB',
        tw => '總共: %d.%d KB',
        fe => '',
    },
    Zcom_Menu_Information_HW_Storage_Free_Total => {
        en => '%d / %d KB',
        cn => '%d / %d KB',
        tw => '',
        fe => '',
    },
    Zcom_Menu_Information_FW_Version => {
        en => 'FW Version',
        cn => '固件版本',
        tw => '韌體版本',
        fe => '',
    },
    Zcom_Menu_Information_Mac_Address => {
        en => 'Mac Address',
        cn => 'MAC地址',
        tw => 'MAC地址',
        fe => '',
    },

    ###########################################################################
    # ZCOM Network menu........Menu
    #                           |----Network
    #                                   |----Site scan
    #                                   |----Network config
    #                                               |----WLAN Profiles
    #                                               |----SIP Profiles
    #                                   |----Ping test
    #                                   |----Re-connect
    ###########################################################################

    Zcom_Menu_Network_title => {
        en => 'Network',
        cn => '网络设定',
        tw => '網路設定',
        fe => '',
    },
    Zcom_Menu_Site_Scan => {
        en => 'Site scan',
        cn => '站点扫描',
        tw => '網路掃描',
        fe => '',
    },
    Zcom_Menu_Ping_Test => {
        en => 'Ping test',
        cn => 'Ping测试',
        tw => 'Ping測試',
        fe => '',
    },
    Zcom_Menu_Reconnect => {
        en => 'Re-connect',
        cn => '重新连接',
        tw => '重新連接',
        fe => '',
    },

    #
    # ZCOM Site scan.......Menu
    #                        |----Network
    #                                 |----Site scan

    WlanScan_ssid_hidden => {
        en => '<hidden>',
        cn => '<隐藏>',
        tw => '<隱藏>',
        fe => '<fhidden>',
    },
    WlanScan_rssi_val => {
        en => 'RSSI: %d',
        cn => '信号: %d',
        tw => '訊號: %d',
        fe => 'fRSSI: %d',
    },
    WlanScan_IBSS => {
        en => 'IBSS',
        cn => 'IBSS',
        tw => '',
        fe => 'fIBSS',
    },
    WlanScan_WPS => {
        en => 'WPS',
        cn => 'WPS',
        tw => '',
        fe => 'fWPS',
    },
    WlanScan_WPS_PushButton => {
        en => 'WPS ready (PBC)',
        cn => 'WPS就绪(PBC)',
        tw => 'WPS設定完成(PBC)',
        fe => 'fWPS ready (PB)',
    },
    WlanScan_WPS_PIN => {
        en => 'WPS ready (PIN)',
        cn => 'WPS准备(PIN)',
        tw => 'WPS設定完成(PIN)',
        fe => 'fWPS ready (PIN)',
    },
    WlanScan_chan_val => {
        en => 'Chan: %d',
        cn => '信道: %d',
        tw => '頻道: %d',
        fe => 'fChan: %d',
    },
    WlanScan_title => {
        en => 'WLAN Scan',
        cn => '无线网络扫描',
        tw => '無線網路掃描',
        fe => 'fWLAN Scan',
    },
    WlanScan_empty => {
        en => 'No AP',
        cn => '没有发现无线接入点',
        tw => '沒有發現無線存取點',
        fe => '',
    },
	WlanScan_searching => {
        en => 'Scanning...',
        cn => '扫描中...',
        tw => '掃描中...',
        fe => '',
    },
    WlanScan_Timeout  => {
        en => 'Scan timed out!',
        cn => '扫描超时!',
        tw => '掃描超時!',
        fe => '',
    },
    WlanScan_Failure  => {
        en => 'Nothing scanned!',
        cn => '扫描失败!',
        tw => '掃描失敗',
        fe => '',
    },

    #
    # ZCOM Network Config......Menu
    #                            |----Network
    #                                    |----Network config

    Menu_Setup_ip_setup => {
        en => 'IP Setting',
        cn => 'IP设置',
        tw => 'IP設定',
        fe => 'fIP Setting',
    },
    Menu_Setup_static_ip_setup => {
        en => 'Static IP Setup',
        cn => '静态IP设置',
        tw => '靜態IP設定',
        fe => 'fStatic IP Setup',
    },
    Zcom_Menu_WLAN_Profiles => {
        en => 'WLAN Profiles',
        cn => '无线配置项',
        tw => '無線網路配置項',
        fe => '',
    },
    Zcom_Menu_SIP_Profiles => {
        en => 'SIP Profiles',
        cn => 'SIP配置项',
        tw => 'SIP配置項',
        fe => '',
    },
    #Zcom_Menu_Certs_Manager => {
    #   en => 'Certs Manager',
    #   fe => '',
    #},

    #
    # ZCOM Network Config......Menu
    #                            |----Network
    #                                    |----Network config
    #                                               |----WLAN Profiles

    Zcom_Menu_WLAN_Profiles_title => {
        en => 'WLAN Profiles',
        cn => '无线配置项',
        tw => '無線網路配置項',
        fe => '',
    },
    Zcom_Menu_WLAN_Profiles_Search => {
        en => 'Profiles List',
        cn => '配置项列表',
        tw => '配置項列表',
        fe => '',
    },
    Zcom_Menu_WLAN_Auto_Connect => {
        en => 'Auto Connect',
        cn => '自动连接',
        tw => '自動連接',
        fe => '',
    },
    Zcom_Menu_WLAN_Auto_Connect_On => {
        en => 'ON',
        cn => '打开',
        tw => '啟用',
        fe => '',
    },
    Zcom_Menu_WLAN_Auto_Connect_Off => {
        en => 'OFF',
        cn => '关闭',
        tw => '關閉',
        fe => '',
    },
    Zcom_Menu_WLAN_Profiles_Add => {
        en => 'Add to Profile',
        cn => '新建配置项',
        tw => '新建配置項',
        fe => '',
    },
    Zcom_Menu_WLAN_Profiles_List => {
        en => 'Profiles List',
        cn => '无线配置项列表',
        tw => '無線網路配置項列表',
        fe => '',
    },
    Zcom_Menu_WLAN_Profiles_Connect => {
        en => 'Connect',
        cn => '连接',
        tw => '連接',
        fe => '',
    },
    Zcom_Menu_WLAN_Profiles_Detail => {
        en => 'Detail',
        cn => '详细',
        tw => '詳細',
        fe => '',
    },
    Zcom_Menu_WLAN_Profiles_Edit => {
        en => 'Edit',
        cn => '编辑',
        tw => '編輯',
        fe => '',
    },
    Zcom_Menu_WLAN_Profiles_Delete => {
        en => 'Delete',
        cn => '删除',
        tw => '刪除',
        fe => '',
    },
    Zcom_Menu_WLAN_Profile_Connecting => {
        en => '<%s>Connecting',
        cn => '连接到<%s>',
        tw => '連接到',
        fe => '',
    },
    Zcom_Menu_WLAN_Profiles_Delete_Message => {
        en => 'WLAN profile deleted!',
        cn => '无线配置项已删除!',
        tw => '無線網路配置項已刪除',
        fe => '',
    },
    Zcom_Menu_WLAN_Profiles_List_Warning => {
        en => 'No WLAN profile listed!',
        cn => '没有无线配置项!',
        tw => '沒有無線網路配置項',
        fe => '',
    },
    WlanProfile_edit_ssid => {
        en => 'SSID',
        cn => 'SSID',
        tw => '',
        fe => 'fSSID',
    },
    WlanProfile_edit_ssid_Invalid => {
        en => 'SSID should not be empty',
        cn => 'SSID 不应该是空的',
        tw => 'SSID不能為空',
        fe => 'fSSID',
    },
    WlanProfile_SecurityModes => {
        en => [ 'Disable',
                'WEP',
                'WPA PSK/TKIP',
                'WPA2 PSK/AES',
                'WPA-EAP',
                'WPA2-EAP'
                       ],
        cn => [ 'Disable',
                'WEP',
                'WPA PSK/TKIP',
                'WPA2 PSK/AES',
                'WPA-EAP',
                'WPA2-EAP'
                       ],
        tw => [ 'Disable',
                'WEP',
                'WPA PSK/TKIP',
                'WPA2 PSK/AES',
                'WPA-EAP',
                'WPA2-EAP'
                       ],
        fe => [ 'fDisable',
                'fWEP',
                'fWPA PSK/TKIP',
                'fWPA2 PSK/AES',
                'fWPA-EAP',
                'fWPA2-EAP',
                       ],
    },
    WlanProfile_AuthenType_WEPOpen => {
        en => 'WEP-Open',
        cn => 'WEP-Open',
        tw => '',
        fe => 'fWEP-Open',
    },
    WlanProfile_AuthenType_WEPShared => {
        en => 'WEP-Shared',
        cn => 'WEP-Shared',
        tw => '',
        fe => 'fWEP-Shared',
    },
    WlanProfile_SecurityModeUnsupported => {
        en => 'Unsupported',
        cn => '未支持',
        tw => '未支持',
        fe => 'fUnsupported',
    },
    WlanProfile_Security_Type => {
        en => 'Security setting',
        cn => '安全设置',
        tw => '安全設定',
        fe => 'fSecurity setting',
    },
    WlanProfile_Security_WEP_Key => {
        en => 'WEP Key',
        cn => 'WEP密钥',
        tw => 'WEP金鑰',
        fe => '',
    },
    WlanProfile_Security_Enter_Key => {
        en => 'Enter Key',
        cn => '输入密钥',
        tw => '輸入金鑰',
        fe => '',
    },
    WlanProfile_Security_Invalid_HEX_Key => {
        en => 'Invalid HEX Key',
        cn => '十六进制密钥无效',
        tw => '十六進制金鑰無效',
        fe => '',
    },
    WlanProfile_Security_Invalid_Key_Length => {
        en => 'Invalid Key Length',
        cn => '密钥长度无效',
        tw => '金鑰長度無效',
        fe => '',
    },
    WlanProfile_Crypto_Eap_Type => {
        en => 'EAP type',
        cn => 'EAP类型',
        tw => 'EAP類型',
        fe => 'fEAP type',
    },
    WlanProfile_Crypto_EapModes => {
        en => ['Auto', 'TTLS', 'PEAP' ],
        cn => ['Auto', 'TTLS', 'PEAP' ],
        tw => ['Auto', 'TTLS', 'PEAP' ],
        fe => ['fAuto', 'fTTLS', 'fPEAP' ],
    },
    WlanProfile_Crypto_edit_eap_username => {
        en => 'Username',
        cn => '用户名',
        tw => '用戶名',
        fe => 'fUsername',
    },
    WlanProfile_Crypto_edit_eap_password => {
        en => 'Password',
        cn => '密码',
        tw => '密碼',
        fe => 'fPassword',
    },
    WlanProfile_PPPOE_Enter_Username => {
        en => 'Userame',
        cn => '用户名',
        tw => '用戶名',
        fe => 'fUsername',
    },
    WlanProfile_PPPOE_Enter_Password => {
        en => 'Password',
        cn => '密码',
        tw => '密碼',
        fe => 'fPassword',
    },
    WlanProfile_PPPOE_username => {
        en => 'Username',
        cn => '用户名',
        tw => '用戶名 ',
        fe => 'fUsername',
    },
    WlanProfile_PPPOE_password => {
        en => 'Password',
        cn => '密码',
        tw => '密碼',
        fe => 'fPassword',
    },
    WlanProfile_PPPOE_User_Menu_Enter => {
        en => 'pppoe menu',
        cn => 'pppoe菜单',
        tw => 'PPPoE選單',
        fe => 'fpppoe menu',
    },

    WlanProfile_Crypto_Key => {
        en => 'WEP Key',
        cn => 'WEP密钥',
        tw => 'WEP用戶名',
        fe => '',
    },
    WlanProfile_Crypto_KeyMethod => {
        en => 'Key Method',
        cn => '加密方法',
        tw => '加密模式',
        fe => 'fKey Method',
    },
    WlanProfile_Crypto_KeyIndex => {
        en => 'WEP key index',
        cn => 'WEP密钥索引',
        tw => 'WEP金鑰索引',
        fe => 'fWEP key index',
    },
    WlanProfile_Crypto_KeyIndex1 => {
        en => 'WEP key 1',
        cn => 'WEP key 1',
        tw => '',
        fe => 'fWEP key 1',
    },
    WlanProfile_Crypto_KeyIndex2 => {
        en => 'WEP key 2',
        cn => 'WEP key 2',
        tw => '',
        fe => 'fWEP key 2',
    },
    WlanProfile_Crypto_KeyIndex3 => {
        en => 'WEP key 3',
        cn => 'WEP key 3',
        tw => '',
        fe => 'fWEP key 3',
    },
    WlanProfile_Crypto_KeyIndex4 => {
        en => 'WEP key 4',
        cn => 'WEP key 4',
        tw => '',
        fe => 'fWEP key 4',
    },
    WlanProfile_WEPKey_AuthenType => {
        en => 'Authen Type',
        cn => '认证类型',
        tw => '認證類型',
        fe => 'fAuthen Type',
    },
    WlanProfile_no_name => {
        en => '<Unused>',
        cn => '<未使用>',
        tw => '為只用',
        fe => 'f<Unused>',
    },
    WlanProfile_Binding_SIPProfile => {
        en => 'SIP Binding',
        cn => 'SIP绑定',
        tw => 'SIP帳號啟用',
        fe => 'fSIP Binding',
    },

    #
    # ZCOM Network Config......Menu
    #                            |----Network
    #                                    |----Network config
    #                                               |----SIP Profiles

    Zcom_Menu_SIP_Profiles_title => {
        en => 'SIP Profiles',
        cn => 'SIP配置项',
        tw => 'SIP設定項 ',
        fe => '',
    },
    Zcom_Menu_SIP_Profiles_Search => {
        en => 'Profiles List',
        cn => 'SIP配置项列表',
        tw => 'SIP配置列表',
        fe => '',
    },
    Zcom_Menu_SIP_Profiles_Add => {
        en => 'Add to Profile',
        cn => '新建SIP配置项',
        tw => '新建SIP配置項',
        fe => '',
    },
    Zcom_Menu_SIP_Profiles_List => {
        en => 'Profiles List',
        cn => 'SIP配置项列表',
        tw => 'SIP配置項列表',
        fe => '',
    },
    Zcom_Menu_SIP_Profiles_Active => {
        en => 'Active',
        cn => '激活',
        tw => '啟用',
        fe => '',
    },
    Zcom_Menu_SIP_Profiles_Deactive => {
        en => 'Deactive',
        cn => '关闭',
        tw => '關閉',
        fe => '',
    },
    Zcom_Menu_SIP_Profiles_Edit => {
        en => 'Edit',
        cn => '编辑',
        tw => '編輯',
        fe => '',
    },
    Zcom_Menu_SIP_Profiles_Delete => {
        en => 'Delete',
        cn => '删除',
        tw => '刪除',
        
        fe => '',
    },
    Zcom_Menu_SIP_Profile_Activated => {
        en => '<%s> Activated',
        cn => '<%s> 被激活',
        tw => '<%s> 啟用',
        fe => '',
    },
    Zcom_Menu_SIP_Profile_Deactivated => {
        en => '<%s> Deactivated',
        cn => '<%s>被关闭',
        tw => '<%s> 關閉',
        fe => '',
    },
    Zcom_Menu_SIP_Profiles_Delete_Message => {
        en => 'SIP Profile Deleted!',
        cn => 'SIP配置项已删除!',
        tw => 'SIP配置項已刪除!',
        fe => '',
    },
    Zcom_Menu_SIP_Profiles_List_Warnning => {
        en => 'No SIP Profile list!',
        cn => '没有SIP配置项!',
        tw => '',
        fe => '',
    },
    ZCOM_Codec_Order_Select => {
        en => 'Codec Order',
        cn => '音频编码优先级',
        tw => '',
        fe => '',
    },

    #
    # ZCOM Ping Test........Menu
    #                         |----Network
    #                                 |----Ping Test

    Zcom_Menu_Ping_Test_title => {
        en => 'Ping test',
        cn => 'Ping测试',
        tw => 'Ping測試',
        fe => '',
    },
    Zcom_Menu_Ping_Manual => {
        en => 'Manual',
        cn => '手动',
        tw => '手動',
        fe => '',
    },
    Zcom_Menu_Ping_Gateway => {
        en => 'Gateway',
        cn => '网关',
        tw => '閘道器',
        fe => '',
    },
    Zcom_Menu_Ping_DNS => {
        en => 'DNS',
        cn => 'DNS',
        tw => '名解析服務器',
        fe => '',
    },
    Zcom_Menu_Ping_SIP_Server => {
        en => 'SIP Server',
        cn => 'SIP服务器',
        tw => 'SIP伺服器',
        fe => '',
    },
    Zcom_Menu_Ping_SIP_Proxy => {
        en => 'SIP Proxy',
        cn => 'SIP代理',
        tw => 'SIP代理器',
        fe => '',
    },
    Zcom_Menu_Ping_Outbound_Proxy_Server => {
        en => 'Outbound Proxy',
        cn => 'Outbound代理',
        tw => 'Outbound代理器',
        fe => '',
    },
    Zcom_Menu_Ping_Stun_Server => {
        en => 'Stun Server',
        cn => 'Stun服务器',
        tw => 'Stun伺服器',
        fe => '',
    }, 
    Zcom_Menu_Flash_Write => {
        en => 'Flash Write',
        cn => 'NULL',
        tw => '',
        fe => '',
    },
    Zcom_Menu_Flash_Read => {
        en => 'Flash Read',
        cn => 'NULL',
        tw => '',
        fe => '',
    },

    ##########################################################################
    ####################### below some other modules #########################
    ##########################################################################

    #
    # Main (top-level) window call ctl
    #
    Main_dial_number => {
        en => 'Dial Number',
        cn => '拨叫号码',
        tw => '撥打号码',
        fe => 'fDial Number',
    },
    Main_inbound_call => {
        en => 'New call from',
        cn => '来电话',
        tw => '來電',
        fe => 'fNew call from',
    },
    Main_outbound_call => {
        en => 'Calling',
        cn => '通话',
        tw => '通話',
        fe => 'fCalling',
    },
    Main_active_call => {
        en => 'Active Call',
        cn => '通话唤醒',
        tw => '通話繼續',
        fe => 'fActive Call',
    },
    Main_active_call_hold => {
        en => 'Hold Call',
        cn => '通话保持',
        tw => '通話保留',
        fe => 'fHold Call',
    },
    Main_active_call_mute => {
        en => 'Mute Call',
        cn => '通话静音',
        tw => '靜音',
        fe => 'fMute Call',
    },
    Main_had_missed_calls => {
        en => ' %u Missed Call(s)',
        cn => '%u 未接电话',
        tw => '%u 未接來電',
        fe => 'f %u Missed Call(s)',
    },
    Main_conferenced_call => {
        en => 'Conferenced',
        cn => '多方会谈',
        tw => '三方通話',
        fe => 'fConferenced',
    },
    Main_active_call_remote_hold => {
        en => 'Remotely Held',
        cn => '对方保持',
        tw => '通話繼續',
        fe => 'fRemotely Held',
    },

    #
    # System component names for error messages
    #
    component_Wlan => {
        en => 'WLAN',
        cn => 'WLAN',
        tw => '',
        fe => 'fWLAN',
    },
    component_Dhcp => {
        en => 'DHCP',
        cn => 'DHCP',
        tw => '',
        fe => 'fDHCP',
    },
    component_VoipStack => {
        en => 'VoIP',
        cn => 'VoIP',
        tw => '',
        fe => 'fVoIP',
    },
    component_CallCtrl => {
        en => 'Call Control',
        cn => '电话控制',
        tw => '通話控制',
        fe => 'fCall Control',
    },
    component_WPS => {
        en => 'WPS',
        cn => 'WPS',
        tw => '',
        fe => 'fWPS',
    },

    #
	# Name Phonebook
	#
	Menu_Phonebook_Number_Empty => {
		en => 'Number can not be empty',
 		cn => '号码不能为空',
                tw => '號碼不能為空',
		fe => '',
	},
	Menu_Phonebook_Rename_Error => {
		en => 'Rename Error',
		cn => '重命名出错',
       		tw => '重命名有誤',
		fe => '',
	},
	Menu_Phonebook_Delete_Record_Error => {
		en => 'Delete PhoneBook Record Error',
		cn => '电话簿记录删除出错',
        	tw => '電話簿紀錄刪除有誤',
		fe => '',
	},
	Menu_Phonebook_Group_Ringtone_Set_Done => {
		en => 'RingTone setting done',
		cn => '铃音设置完成',
        	tw => '鈴聲設定完成',
		fe => '',
	},
	Menu_Phonebook_Group_Ringtone_Set_Error => {
		en => 'RingTone setting error',
		cn => '铃音设置出错',
        	tw => '鈴聲設定有誤',
		fe => '',
	},
	Menu_Phonebook_ViewDetail_Index_Error => {
		en => 'invalid index',
		cn => '无效索引',
        	tw => '無效的索引',
		fe => '',
	},
	Menu_ViewDetail_Title_Name => {
		en => 'Name',
		cn => '电话簿',
        	tw => '電話簿',
		fe => '',
	},
	Menu_ViewDetail_Title_Number => {
		en => 'Number',
		cn => '号码',
        	tw => '電話號碼',
		fe => '',
	},
	Menu_ViewDetail_Title_Group => {
		en => 'Group',
		cn => '群组',
        	tw => '群組',
		fe => '',
	},
	Menu_GroupList_None => {
		en => 'None',
 		cn => '无',
        	tw => '無',
		fe => '',
	},
	Menu_GroupList_Business => {
		en => 'Business',
 		cn => '会议',
        	tw => '會議',
		fe => '',
	},
	Menu_GroupList_Family => {
		en => 'Family',
		cn => '家庭',
        	tw => '家庭',
		fe => '',
	},
	Menu_GroupList_Friends => {
		en => 'Friends',
		cn => '朋友',
       		tw => '朋友',
		fe => '',
	},
	Menu_GroupList_VIP => {
		en => 'VIP',
		cn => '重要人士',
        	tw => '重要人士',
		fe => '',
	},
	Menu_GroupList_Other => {
		en => 'Other',
		cn => '其他',
		tw => '其他',
		fe => '', 
	},
	Group_Member_Empty => {
		en => 'Group Member Empty',
		cn => '小组成员空',
        	tw => '無群組成員',
		fe => '',
	},
    Menu_Call_Search_title => {
        en => 'Search',
        cn => '查找',
        tw => '搜尋',
        fe => 'fSearch',
    },
    Menu_Call_Group_title => {
        en => 'Group',
        cn => '群组',
        tw => '群組',
        fe => '',
    },
    Menu_Call_Search_Talk => {
    	en => 'Talk',
    	cn => '通话',
        tw => '通話',
    	fe => '',
    },
    Menu_Call_Search_detail => {
    	en => 'Detail',
    	cn => '详细',
        tw => '詳細',
    	fe => '',
    },
    Menu_Call_Search_add => {
    	en => 'Add',
    	cn => '增加',
        tw => '增加',
    	fe => '',
    },
    Menu_Call_Search_speeddial => {
    	en => 'Speed Dial',
    	cn => '快速拨号盘',
        tw => '快速撥號',
    	fe => '',
    },
    Menu_Call_Search_deleteall => {
    	en => 'Delete all',
    	cn => '全部删除',
        tw => '全部刪除',
    	fe => '',
    },
    Menu_Call_Search_memorystatus => {
    	en => 'Memory status',
    	cn => '内存状态',
        tw => '記憶體狀態',
    	fe => '',
    },
    Menu_Call_Search_call => {
        en => 'Call',
        cn => '电话',
        tw => '通話',
        fe => 'fCall',
    },
    Menu_Call_Search_edit => {
        en => 'Edit',
        cn => '编辑',
        tw => '編輯',
        fe => 'fEdit',
    },
    Menu_Call_Search_delete => {
        en => 'Delete',
        cn => '删除',
        tw => '刪除',
        fe => 'fDelete',
    },
    Menu_Call_Search_group => {
        en => 'Group',
        cn => '群组',
        tw => '群組',
        fe => 'fGroup',
    },
    Menu_Group_memberlist => {
        en => 'Member List',
        cn => '成员名单',
        tw => '成員名單',
        fe => '',
    },
    Menu_Group_ringtone => {
        en => 'Ring tones',
        cn => '铃声类型',
        tw => '鈴聲類型',
        fe => '',
    },
    Menu_Group_rename => {
        en => 'Rename',
        cn => '重命名',
        tw => '重新命名',
        fe => '',
    },
    Menu_Menu_Call_Search_Add200 => {
        en => 'Add200',
        cn => 'Add200',
        tw => '',
        fe => '',
    },
    # Phone book add/find menu
    PhoneBook_search_name => {
        en => 'Search Name',
        cn => '查找姓名',
        tw => '查尋姓名',
        fe => 'fSearch Name',
    },
    PhoneBook_enter_search_name => {
        en => 'Search Name',
        cn => '查找姓名',
        tw => '查尋姓名',
        fe => 'fSearch Name',
    },
    PhoneBook_add_find_name => {
        en => 'Find/add name',
        cn => '查找/增加姓名',
        tw => '查尋/新增姓名',
        fe => 'fFind/add name',
    },
    PhoneBook_enter_add_find_name => {
        en => 'Enter name',
        cn => '输入姓名',
        tw => '輸入姓名',
        fe => 'fEnter name',
    },
    PhoneBook_add_entry_query => {
        en => 'Add new name ?',
        cn => '增加新姓名?',
        tw => '新增名稱?',
        fe => 'fAdd new name ?',
    },
    PhoneBook_title => {
        en => 'Phone Book',
        cn => '电话簿',
        tw => '電話',
        fe => 'fPhone Book',
    },
    PhoneBook_phone_numbers => {
        en => 'Phone numbers',
        cn => '电话号码',
        tw => '電話號碼',
        fe => 'fPhone numbers',
    },
    PhoneBook_empty => {
        en => 'Phone book empty',
        cn => '电话簿为空',
        tw => '電話簿為空',
        fe => 'fPhone book empty',
    },
    PhoneBook_nofound => {
        en => 'No Found',
        cn => '没有发现',
        tw => '沒有發現',
        fe => 'fNo Found',
    },
    PhoneBook_savefinish => {
        en => 'Save Finish',
        cn => '保存完毕',
        tw => '儲存完成',
        fe => 'fSave Finish',
    },
    PhoneBook_edit_name => {
        en => 'Edit name',
        cn => '编辑姓名',
        tw => '編輯姓名',
        fe => 'fEdit name',
    },
    PhoneBook_delete_entry => {
        en => 'Delete entry',
        cn => '删除条目',
        tw => '刪除該項目',
        fe => 'fDelete entry',
    },
    PhoneBook_deleteall_entry_query => {
        en => 'Are you sure?  Delete all?',
        cn => '确定全部删除?',
        tw => '確定全部刪除?',
        fe => 'fAre you sure?  Delete all?',
    },
    PhoneBook_deletefinish => {
        en => 'Delete Finish',
        cn => '删除完毕',
        tw => '刪除完成',
        fe => 'fDelete Finish',
    },
    PhoneBook_delete_confirm__name => {
        en => 'Delete entry %s ?',
        cn => '确定删除条目? %s',
        tw => '確定刪除該項目? %s',
        fe => 'fDelete entry %s ?',
    },
    PhoneBook_enter_new_name => {
        en => 'Enter new name',
        cn => '输入姓名',
        tw => '輸入姓名',
        fe => 'fEnter new name',
    },
    PhoneBook_edit_number => {
        en => 'Edit number',
        cn => '编辑号码',
        tw => '編輯號碼',
        fe => 'fEdit number',
    },
    PhoneBook_call_number => {
        en => 'Call number',
        cn => '拨叫号码',
        tw => '通話號碼',
        fe => 'fCall number',
    },
    PhoneBook_paste_number => {
        en => 'Paste number',
        cn => '粘帖号码',
        tw => '貼上號碼',
        fe => 'fPaste number',
    },
    PhoneBook_special_ring => {
        en => 'Special ring',
        cn => '特别铃音',
        tw => '特殊鈴聲',
        fe => 'fSpecial ring',
    },
    PhoneBook_change_ring_default => {
        en => 'Default ring',
        cn => '默认铃音',
        tw => '默認鈴聲',
        fe => 'fDefault ring',
    },
    PhoneBook_change_ring_melody => {
        en => 'Ring melody',
        cn => '电话铃声',
        tw => '電話鈴聲',
        fe => 'fRing melody',
    },
    PhoneBook_change_ring_recording => {
        en => 'Ring recording',
        cn => '电话录音中',
        tw => '電話錄音中',
        fe => 'fRing recording',
    },
    PhoneBook_change_ring_test => {
        en => 'Test Ring',
        cn => '铃音测试',
        tw => '鈴聲測試',
        fe => 'fTest Ring',
    },
    PhoneBook_delete_number => {
        en => 'Delete number',
        cn => '删除号码',
        tw => '號碼刪除',
        fe => 'fDelete number',
    },
    PhoneBook_delete_confirm__number => {
        en => 'Delete number ?',
        cn => '删除号码?',
        tw => '號碼刪除',
        fe => 'fDelete number ?',
    },
    PhoneBook_add_speed_dial => {
        en => 'Set speed dial',
        cn => '设置快速拨号盘',
        tw => '快速撥號設定',
        fe => 'fSet speed dial',
    },
    PhoneSetup_ring_tone_test => {
        en => 'Test ring',
        cn => '测试铃音',
        tw => '鈴聲測試',
        fe => 'fTest ring',
    },

    #
    # ZCOM Peer-To-Peer String
    #
    ZCOM_P2P_Dialing => {
        en => 'P2P Dialing',
        cn => 'P2P拨号',
        tw => 'P2P撥號',
        fe => '',
    },
    ZCOM_P2P_Number_Entry => {
        en => 'P2P Number',
        cn => 'P2P号码',
        tw => 'P2P號碼',
        fe => '',
    },
    ZCOM_P2P_Domain_Entry => {
        en => 'P2P Domain',
        cn => 'P2P地址',
        tw => 'P2P地址',
        fe => '',
    },
    ZCOM_P2P_Port_Entry => {
        en => 'P2P Port',
        cn => 'P2P端口',
        tw => 'P2P端口',
        fe => '',
    },
    ZCOM_P2P_Dialing_Confirm => {
        en => 'Start P2P dialing?',
        cn => '开始P2P拨号?',
        tw => '開始P2P撥號?',
        fe => '',
    },
    ZCOM_P2P_Warning => {
        en => 'P2P Warning',
        cn => 'P2P警告',
        tw => 'P2P警告',
        fe => '',
    },
    ZCOM_P2P_Invalid_Number => {
        en => 'Invalid Number!',
        cn => '号码无效!',
        tw => '號碼無效',
        fe => '',
    },
    ZCOM_P2P_Invalid_Domain => {
        en => 'Invalid Domain!',
        cn => 'Domain无效!',
        tw => '被叫者網路位址錯誤',
        fe => '',
    },
    ZCOM_P2P_ERR_DIAL_SIP => {
        en => 'Please use P2P dialing to dial!',
        cn => '请使用P2P拨叫!',
        tw => '請使用P2P撥號',
        fe => '',
    },

    #
    #Mode
    #by Mike
    #
    ZCOM_TITLE_Mode => {
        en => 'Mode',
        cn => 'Mode',
        tw => '',
        fe => '',
    },
    ZCOM_Mode_SIP => {
        en => 'SIP',
        cn => 'SIP',
        tw => '',
        fe => '',
    },
    ZCOM_Mode_P2P => {
        en => 'P2P',
        cn => 'P2P',
        tw => '',
        fe => '',
    },
    ZCOM_P2P_Invalid_Port => {
        en => 'Invalid port!',
        cn => 'Invalid port!',
        tw => '',
        fe => '',
    },

    #
    # ZCOM Factory Mode
    #
    ZCOM_Factory_Mode_Title => {
        en => 'Factory Mode',
        cn => '恢复出厂模式',
        tw => '恢復出廠模式',
        fe => '',
    },
    ZCOM_Test_Step_Title => {
        en => [ 'Keypad Test',
                'Vibrate Test',
                'Speaker Test',
                'Receiver Test',
                'Microphone Test',
                'LED Test'],
        cn => [ '键盘测试',
                '振动测试',
                '扬声器测试',
                '听筒测试',
                '麦克风测试',
                'LED测试'],
        tw => [ '鍵盤測試',
                '震動測試',
                '免持測試',
                '手持測試',
                '麥克風測試',
                'LED測試'],
        fe => [ '',
                '',
                '',
                '',
                '',
                ''],
    },
    ZCOM_PreTest_Step_Title => {
        en => [ 'Keypad Test',
                'Vibrate Test',
                'Speaker(ALB)',
                'Receiver(ALB)'],
        cn => [ '键盘测试',
                '振动测试',
                '扬声器(ALB)',
                '听筒(ALB)'],
        tw => [ '鍵盤測試',  
                '震動測試',
                '免持測試(ALB)',
                '手持測試(ALB)'],
        fe => [ '',
                '',
                '',
                ''],
    },
    ZCOM_Test_Report_Title => {
        en => 'Test Report',
        cn => '测试结果',
        tw => '測試結果',
        fe => '',
    },
    ZCOM_Test_YesOrNo_Text => {
        en => '"*" for Yes "#" for No',
	cn => '"*"为是"#"为否',
	tw => '"*"為是"#"為否',
        fe => '',
    },
    ZCOM_Test_LCD_Text => {
        en => 'Is LCD Ok?',
        cn => 'LCD是好的吗?',
        tw => 'LCM是好的嗎?',
        fe => '',
    },
    ZCOM_Test_Keypad_Remain_Text1 => {
        en => 'was not pressed',
        cn => '未被按',
        tw => '未被按',
        fe => '',
    },
	ZCOM_Test_Keypad_Remain_Text2 => {
        en => 'were not pressed',
        cn => '未被按',
        tw => '未被按',
        fe => '',
    },
    ZCOM_Test_VIBRATE_Text => {
        en => 'Is vibration Ok?',
        cn => '振动是好的吗?',
        tw => '震動是好的嗎?',
        fe => '',
    },
	ZCOM_Test_Speaker_question => {
	    en => 'Do you hear anything?',
	    cn => '您听见什么吗?',
            tw => '有聽見音樂嗎?',
	    fe => '',
	},
	ZCOM_Test_SpeakerVoice_question => {
            en => 'Is audio loopback Ok?',
            cn => '确定音频回放?',
            tw => '',
            fe => '',
        },
	ZCOM_Test_Vol_Inc_Text => {
        en => 'Vol+',
        cn => '音量增',
        tw => '增加',
        fe => '',
    },
	ZCOM_Test_Vol_Dec_Text => {
        en => 'Vol-',
        cn => '音量减',
        tw => '減少',
        fe => '',
    },
	ZCOM_Test_Receiver_question => {
	    en => 'Do you hear anything?',
	    cn => '您听见什么吗?',
            tw => '有聽見聲音嗎?',
	    fe => '',
	},
        ZCOM_Test_ReceiverVoice_question => {
            en => 'Is audio loopback Ok?',
            cn => '确定音频回放?',
            tw => '語音迴路是否正常',
            fe => '',
        },
	ZCOM_Test_Microphone_question => {
	    en => 'Talk for 5s, voice heared?',
	    cn => 'Talk for 5s, voice heared?',
            tw => '請說話,5s後撥出',
	    fe => '',
	},
    ZCOM_Test_LED_Text => {
        en => 'Is LED Ok?',
        cn => 'Is LED Ok?',
        tw => 'LED是好的嗎?',
        fe => '',
    },
    ZCOM_Test_WLAN_Text_Not_Ready => {
        en => 'Not Ready.',
        cn => '未就绪。',
        tw => '尚未完成設定。',
        fe => '',                     
    },
    ZCOM_Test_WLAN_Text_Scanning => {
        en => 'Scanning!',
        cn => '扫描中!',
        tw => '掃描中',
        fe => '',
    },
    ZCOM_Test_WLAN_Text_Connecting => {
        en => 'Connecting!',
        cn => '连接中!',
        tw => '連接中',
        fe => '',
    },
    ZCOM_Test_WLAN_Text_GettingIP => {
        en => 'Getting IP Address!',
        cn => '取得IP地址!',
        tw => '取得網路地址',
        fe => '',
    },
    ZCOM_Test_WLAN_Text_Pinging => {
        en => 'Pinging!',
        cn => 'Ping进行中!',
        tw => 'Ping進行中!',
        fe => '',
    },

    ZCOM_Test_WLAN_Result_Pass => {
        en => 'PASS!',
        cn => '通过!',
        tw => '通過!',
        fe => '',
    },
    ZCOM_Test_WLAN_Result_Scan_Timeout => {
        en => 'Scan timed out!',
        cn => '扫描时间到!',
        tw => '掃描時間超時!',
        fe => '',
    },
    ZCOM_Test_WLAN_Result_Connect_Timeout => {
        en => 'Connect timed out!',
        cn => '连接超时!',
        tw => '連接超時!',
        fe => '',
    },
    ZCOM_Test_WLAN_Result_DHCP_Timeout => {
        en => 'DHCP timed out!',
        cn => 'DHCP超时!',
        tw => 'DHCP超時!',
        fe => '',
    },
    ZCOM_Test_WLAN_Result_Ping_Timeout => {
        en => 'All pings timed out!',
        cn => '所有Ping都超时!',
        tw => '所有Ping都超時!',
        fe => '',
    },

    #
    # ZCom Log Messages
    #
    ZCOM_Log_Msg_Error_Code => {
        en => 'Error Log Code!',
        cn => '日志编码出错!',
        tw => '紀錄编码出错!',
        fe => '',
    },
    ZCOM_Log_Nothing => {
        en => 'No Logs Yet!',
        cn => '没有日志!',
        tw => '無任何紀錄!',
        fe => '',
    },
    # Section WLAN
    ZCOM_Log_Msg_WLAN_NO_NETWORK_AVAIL => {
        en => 'NO_NETWORK_AVAIL',
        cn => 'NO_NETWORK_AVAIL',
        tw => '',
        fe => '',
    },
    ZCOM_Log_Msg_WLAN_LOST_LINK => {
        en => 'LOST_LINK',
        cn => 'LOST_LINK',
        tw => '',
        fe => '',
    },
    ZCOM_Log_Msg_WLAN_DISCONNECT_CMD => {
        en => 'DISCONNECT_CMD',
        cn => 'DISCONNECT_CMD',
        tw => '與AP斷線',
        fe => '',
    },
    ZCOM_Log_Msg_WLAN_BSS_DISCONNECTED => {
        en => 'BSS_DISCONNECTED',
        cn => 'BSS_DISCONNECTED',
        tw => '',
        fe => '',
    },
    ZCOM_Log_Msg_WLAN_AUTH_FAILED => {
        en => 'AUTH_FAILED',
        cn => 'AUTH_FAILED',
        tw => '',
        fe => '',
    },
    ZCOM_Log_Msg_WLAN_ASSOC_FAILED => {
        en => 'AUTH_FAILED',
        cn => 'AUTH_FAILED',
        tw => '',
        fe => '',
    },
    ZCOM_Log_Msg_WLAN_INVALID_PROFILE => {
        en => 'AUTH_FAILED',
        cn => 'AUTH_FAILED',
        tw => '',
        fe => '',
    },
    ZCOM_Log_Msg_WLAN_AUTH_FAILED => {
        en => 'AUTH_FAILED',
        cn => 'AUTH_FAILED',
        tw => '',
        fe => '',
    },
    ZCOM_Log_Msg_WLAN_Scanning => {
        en => 'WLAN Scanning!',
        cn => '无线网络扫描中!',
        tw => '無線網路掃描中!',
        fe => '',
    },
    ZCOM_Log_Msg_WLAN_Connecting => {
        en => 'WLAN Connecting !',
        cn => '无线网络连接中!',
        tw => '無線網路連接中!',
        fe => '',
    },
    ZCOM_Log_Msg_WLAN_Connected => {
        en => 'WLAN Connected!',
        cn => '无线网络已连接!',
        tw => '無線網路已連接!',
        fe => '',
    },
    ZCOM_Log_Msg_WLAN_Disconnected => {
        en => 'WLAN Disconnected!',
        cn => '无线网络无连接!',
        tw => '無線網路無連接!',
        fe => '',
    },
    # Section IP
    ZCOM_Log_Msg_IP_DHCPSERVER_DONT_RESPONSE => {
        en => 'DHCPSERVER DONT RESPONSE!',
        cn => 'DHCP服务器无回应!',
        tw => 'DHCP伺服器無回應!',
        fe => '',
    },
    ZCOM_Log_Msg_IP_IP_DUPLICATED => {
        en => 'IP DUPLICATED',
        cn => 'IP被复制',
        tw => '網路地址重覆',
        fe => '',
    },
    ZCOM_Log_Msg_IP_INVALID_IPADDRESS => {
        en => 'INVALID IP ADDRESS!',
        cn => 'IP地址无效!',
        tw => '網路位址無效!',
        fe => '',
    },
    ZCOM_Log_Msg_IP_IDLE => {
        en => 'IP IDLE!',
        cn => 'IP为空闲!',
        tw => '網路位址未使用',
        fe => '',
    },
    ZCOM_Log_Msg_IP_DHCP_Request => {
        en => 'DHCP Request!',
        cn => 'DHCP请求!',
        tw => '網路位址請求',
        fe => '',
    },
    ZCOM_Log_Msg_IP_PPPoE_Request => {
        en => 'PPPoE Request!',
        cn => 'PPPoE请求!',
        tw => 'PPPoE認證請求!',
        fe => '',
    },
    ZCOM_Log_Msg_IP_Ready => {
        en => 'IP Ready!',
        cn => 'IP就绪!',
        tw => '網路位址就緒!',
        fe => '',
    },
    # Section SIP
    ZCOM_Log_Msg_SIP_SIPSERVER_ADDRESS_RESOLVER_ERROR => {
        en => 'SIP SERVER ADDRESS RESOLVER ERROR!',
        cn => 'SIP服务器地址解析错误!',
        tw => 'SIP伺服器地址解析錯誤!',
        fe => '',
    },
    ZCOM_Log_Msg_SIP_UNAUTHORIZED => {
        en => 'SIP UNAUTHORIZED!',
        cn => 'SIP未授权!',
        tw => 'SIP尚未授權',
        fe => '',
    },
    ZCOM_Log_Msg_SIP_USER_NOT_APPROVAL => {
        en => 'USER NOT APPROVAL!',
        cn => '用户名不正确!',
        tw => '用戶名不正確',
        fe => '',
    },
    ZCOM_Log_Msg_SIP_USER_NOT_FOUND => {
        en => 'USER NOT FOUND!',
        cn => '用户名没有找到!',
        tw => '沒有用戶名!',
        fe => '',
    },
    ZCOM_Log_Msg_SIP_SIPSERVER_DONT_RESPONSE => {
        en => 'SIP SERVER DONT RESPONSE!',
        cn => 'SIP服务器无响应!',
        tw => 'SIP伺服器無回應!',
        fe => '',
    },
    ZCOM_Log_Msg_SIP_SIPSERVER_ADDRESS_ERROR => {
        en => 'SIP SERVER ADDRESS ERROR!',
        cn => 'SIP服务器地址错误!',
        tw => 'SIP伺服器地址錯誤',
        fe => '',
    },
    ZCOM_Log_Msg_SIP_Config_Error => {
        en => 'No SIP Service',
        cn => '没有正确配置SIP',
        tw => 'SIP設定尚未完成',
        fe => '',
    },
    ZCOM_Log_Msg_SIP_Previous_Pending => {
        en => 'PREVIOUS REGISTER PENDING!',
        cn => '先前登录进行中!',
        tw => 'SIP伺服器登入中!',
        fe => '',
    },
    ZCOM_Log_Msg_SIP_Timeout => {
        en => 'SIP REGISTER TIMEOUT',
        cn => 'SIP登录时间超时',
        tw => 'SIP登入時間超時',
        fe => '',
    },
    ZCOM_Log_Msg_SIP_Address_Error => {
        en => 'SIP REGISTER ADDRESS ERROR',
        cn => 'SIP登录地址错误',
        tw => 'SIP登入地址錯誤',
        fe => '',
    },
    ZCOM_Log_Msg_SIP_IDLE => {
        en => 'SIP IDLE!',
        cn => 'SIP空闲状态!',
        tw => 'SIP設定尚未完成!',
        fe => '',
    },
    ZCOM_Log_Msg_SIP_Registering => {
        en => 'SIP Rigistering!',
        cn => 'SIP注册中!',
        tw => 'SIP 註冊中',
        fe => '',
    },
    ZCOM_Log_Msg_SIP_READY => {
        en => 'SIP READY!',
        cn => 'SIP就绪!',
        tw => 'SIP設定完成',
        fe => '',
    },

    #
    # ZCOM Auto answer menu
    #
    ZCOM_AutoAnswer_title => {
        en => 'Forward',
        cn => '转接',
        tw => '來電轉接',
        fe => 'fForward',
    },
    ZCOM_AutoAnswer_Off => {
        en => 'OFF',
        cn => '关闭',
        tw => '關閉',
        fe => 'fOFF',
    },
    ZCOM_AutoAnswer_Forward => {
        en => 'ON',
        cn => '打开',
        tw => '啟用',
        fe => 'fON',
    },
    ZCOM_AutoAnswer_Forward_Number_title => {
        en => 'Forward Number',
        cn => '转接号码',
        tw => '轉接號碼',
        fe => 'fForward Number',
    },
    ZCOM_AutoAnswer_Forward_Number_Warning => {
        en => 'Must Input the forward number!',
        cn => '必须输入转接号码!',
        tw => '',
        fe => '',
    },
    ZCOM_AutoAnswer_Forward_type => {
        en => 'Forward Type',
        cn => '转接类型',
        tw => '轉接類型',
        fe => 'fForward Type',
    },
    ZCOM_AutoAnswer_Forward_Never => {
        en => 'Never',
        cn => '从不',
        tw => '關閉',
        fe => 'fNever',
    },
    ZCOM_AutoAnswer_Forward_Always => {
        en => 'Always',
        cn => '一直',
        tw => '無條件',
        fe => 'fAlways',
    },
    ZCOM_AutoAnswer_Forward_IfBusy => {
        en => 'Busy',
        cn => '占线',
        tw => '忙碌',
        fe => 'fBusy',
    },
    ZCOM_AutoAnswer_Forward_IfNoAnswer => {
        en => 'No Answer',
        cn => '无应答',
        tw => '無回應',
        fe => 'fNo Answer',
    },
    ZCOM_AutoAnswer_Forward_IfBusyOrNoAnswer => {
        en => 'Busy & No Answer',
        cn => '忙 & 无应答',
        tw => '忙碌和無回應',
        fe => 'fBusy & No Answer',
    },
    ZCOM_AutoAnswer_Forward_NoAnswer_Timeout => {
        en => 'NoAnswer Time',
        cn => '无应答时间',
        tw => '無回應時間',
        fe => 'fNoAnswer Time',
    },
    ZCOM_AutoAnswer_Forward_NoAnswer_Timeout_5sec => {
        en => '5s',
        cn => '5秒',
        tw => '5秒',
        fe => 'f5s',
    },
    ZCOM_AutoAnswer_Forward_NoAnswer_Timeout_10sec => {
        en => '10s',
        cn => '10秒',
        tw => '10秒',
        fe => 'f10s',
    },
    ZCOM_AutoAnswer_Forward_NoAnswer_Timeout_15sec => {
        en => '15s',
        cn => '15秒',
        tw => '15秒',
        fe => 'f15s',
    },
    ZCOM_AutoAnswer_Forward_NoAnswer_Timeout_20sec => {
        en => '20s',
        cn => '20秒',
        tw => '20秒',
        fe => 'f20s',
    },
    ZCOM_AutoAnswer_Forward_NoAnswer_Timeout_Other => {
        en => 'Other',
        cn => '其他',
        tw => '其他',
        fe => 'fOther',
    },
    ZCOM_AutoAnswer_Forward_NoAnswer_Timeout_Enter => {
        en => 'Enter NoAnswer Secs',
        cn => '输入无应答秒数',
        tw => '輸入無回應時間',
        fe => 'fEnter NoAnswer Secs',
    },

	#
	# Main screen status display message
	#
	Main_Screen_Status_No_Preferred_WLAN_Profile => {
        en => 'No WLAN Service',
        cn => '没有正确配置无线',
        tw => 'WLAN設定尚未完成',
        fe => '',
    },
	Main_Screen_Status_WLAN_Scanning => {
        en => 'Scanning',
        cn => '扫描中',
        tw => '掃描中',
        fe => '',
    },
	Main_Screen_Status_WLAN_Connecting => {
        en => 'Connecting',
        cn => '连接中',
        tw => '連接中',
        fe => '',
    },
	Main_Screen_Status_WLAN_Connected => {
        en => 'Connected',
        cn => '已连接',
        tw => '已連接',
        fe => '',
    },
	Main_Screen_Status_WLAN_Disconnected => {
        en => 'Disconnected',
        cn => '无连接',
        tw => '無連接',
        fe => '',
    },
	Main_Screen_Status_IP_Requesting => {
        en => 'IP Requesting',
        cn => 'IP请求',
        tw => '網路位址請求',
        fe => '',
    },
	Main_Screen_Status_IP_Request_Failed => {
        en => 'IP Failed',
        cn => 'IP失败',
        tw => '網路位址請求失敗',
        fe => '',
    },
	Main_Screen_Status_IP_Ready => {
        en => 'IP Ready',
        cn => 'IP就绪',
        tw => '網路位址設定完成',
        fe => '',
    },
	Main_Screen_Status_SIP_Registering => {
        en => 'Registering',
        cn => '登录',
        tw => '登入中',
        fe => '',
    },
	Main_Screen_Status_SIP_Register_Failed => {
        en => 'Register Failed',
        cn => '登录失败',
        tw => '登入失敗',
        fe => '',
    },
	Main_Screen_Status_SIP_Registered => {
        en => 'Registered',
        cn => '登录',
        tw => '登入完成',
        fe => '',
    },
	Main_Screen_Status_SIP_Config_Error => {
        en => 'No SIP Service',
        cn => '没有正确配置SIP',
        tw => 'SIP設定尚未完成',
        fe => '',
    },
    PhoneInfo_none => {
        en => 'none',
        cn => '无',
        tw => '無',
        fe => 'fnone',
    },

    #
    # ZCOM String Resource
    #
    ZCOM_STRING_RES_WAIT => {
        en => 'Waiting...',
        cn => '请等待...',
        tw => '請等待...',
        fe => '',
    },
    ZCOM_STRING_RES_GOODBYE => {
        en => 'GOODBYE',
        cn => '关机中...',
        tw => '關機中...',
        fe => '',
    },
    ZCOM_STRING_RES_FW_UPGRADING => {
        en => 'Upgrading...',
        cn => '升级中...',
        tw => '升級中...',
        fe => '',
    },
    ZCOM_STRING_RES_FW_UPGRADE_SUCCESS => {
        en => 'Upgrade success',
        cn => '升级成功',
        tw => '升級成功',
        fe => '',
    },
    ZCOM_STRING_RES_FW_UPGRADE_FAILURE => {
        en => 'Upgrade failure',
        cn => '升级失败',
        tw => '升級失敗',
        fe => '',
    },
    ZCOM_STRING_RES_SoftKey_Text_KeyPad_Lock => {
        en => 'Lock',
        cn => '锁定',
        tw => '鎖定',
        fe => '',
    },
    ZCOM_STRING_RES_SoftKey_Text_KeyPad_Unlock => {
        en => 'Unlock',
        cn => '解锁',
        tw => '解鎖',
        fe => '',
    },
    ZCOM_STRING_RES_KeyPad_Lock_Prompt_Title => {
        en => 'Keypad Lock',
        cn => '键盘锁',
        tw => '按鍵鎖',
        fe => '',
    },
    ZCOM_STRING_RES_KeyPad_Lock_Prompt_Unlock => {
        en => 'Press left soft key then "*" key for unlocking',
        cn => '键盘解锁请先按左软键再按"*"键',
        tw => '按鍵解鎖,請先按左軟件在按"*"鍵',
        fe => '',
    },
    ZCOM_STRING_RES_KeyPad_Lock_Prompt_Wait_Star => {
        en => 'Press "*" key for unlocking',
        cn => '键盘解锁请按"*"键',
        tw => '按鍵解鎖,請按"*"鍵',
        fe => '',
    },
    ZCOM_STRING_RES_KeyPad_Lock_Msg => {
        en => 'Keypad Locked',
        cn => '键盘锁定',
        tw => '按鍵鎖定',
        fe => '',
    },
    ZCOM_STRING_RES_KeyPad_Unlock_Msg => {
        en => 'Keypad Unlocked',
        cn => '键盘开锁',
        tw => '按鍵開鎖',
        fe => '',
    },
    ZCOM_STRING_RES_Invalid_Empty_Name => {
        en => 'Empty profile name is not allowed!',
        cn => '不允许空的Profile名称!',
        tw => 'Profile名稱不能為空!',
        fe => '',
    }, 
    ZCOM_STRING_RES_Sip_Profile_Name_Conflict => {
        en => 'The name is already in use!', 
        cn => '名称重复',
        tw => '名稱重覆',
        fe => '',
    },
    ZCOM_STRING_RES_SIP_Profile_Lack => {
        en => 'No place to add a new SIP profile!',
        cn => '没有空间增加新的SIP配置!',
        tw => 'SIP配置已滿!' ,
        fe => '',
    },
    ZCOM_STRING_RES_Wlan_Profile_Lack => {
        en => 'No place to add a new WLAN profile!',
        cn => '没有空间增加新的无线配置!',
        tw => 'WLAN配置已滿!',
        fe => '',
    },
    ZCOM_STRING_RES_Ping_Sent => {
        en => 'Sent=%lu ',
        cn => 'Sent=%lu ',
        tw => 'Sent=%lu ',
        fe => '',
    },
    ZCOM_STRING_RES_Ping_Receive => {
        en => 'Received=%lu ',
        cn => 'Received=%lu ',
        tw => 'Received=%lu ',
        fe => '',
    },
    ZCOM_STRING_RES_Ping_Lost => {
        en => 'Lost=%lu.(%lu%%loss)',
        cn => 'Lost=%lu.(%lu%%loss)',
        tw => 'Lost=%lu.(%lu%%loss)',
        fe => '',
    },
    ZCOM_STRING_RES_Network_Not_Up => {
        en => 'Network Not Up Yet!',
        cn => '网络还没建立!',
        tw => '尚未連接到無線網路!',
        fe => '',
    },
    ZCOM_STRING_RES_Ping_Address_Invalid => {
        en => 'Invalid Address!',
        cn => '地址无效!',
        tw => '地址無效!',
        fe => '',
    },
    ZCOM_STRING_RES_Ping_Job_Create_Fail => {
        en => 'Ping start with error!',
        cn => '启动Ping错误!',
        tw => '啟動Ping錯誤!',
        fe => '',
    },
    ZCOM_STRING_Provision_Profile_list => {
        en => '[From Provision]',
        cn => '预定义',
        tw => 'Provisioning',
        fe => '',
    },
    ZCOM_STRING_Provision_Profile_list_Warning => {
        en => 'No Provision Profiles!',
        cn => '无预定义配置项',
        tw => '無Provisioning配置',
        fe => '',
    },
    ZCOM_STRING_No_Value => {
        en => '<No Value>',
        cn => '<未设定>',
        tw => '<未定義>',
        fe => '',
    },

    #
    # Play menu - play arbitrary sounds (melodies, tones, recordings)
    #
    Menu_PlayTune_title => {
        en => 'Play Tune',
        cn => '播放音乐',
        tw => '音樂播放',
        fe => 'fPlay Tune',
    },
    Menu_PlaySystemTone_title => {
        en => 'Play System Tone',
        cn => '播放系统铃音',
        tw => '系統鈴聲播放',
        fe => 'fPlay System Tone',
    },
    # For test only?
    Menu_Play_RingTone => {
        en => 'Play ringtone',
        cn => '播放ringtone',
        tw => '響鈴播放',
        fe => 'fPlay ringtone',
    },
    Menu_Play_DialTone => {
        en => 'Play dialtone',
        cn => '播放dialtone',
        tw => '撥號音播放',
        fe => 'fPlay dialtone',
    },
    Menu_Play_BusyTone => {
        en => 'Play busytone',
        cn => '播放busytone',
        tw => '忙碌音播放',
        fe => 'fPlay busytone',
    },
    Menu_Play_440_Hz => {
        en => 'Play A (440 Hz)',
        cn => '播放A (440 赫兹)',
        tw => '播放',
        fe => 'fPlay A (440 Hz)',
    },
    Menu_Play_Rainbow => {
        en => 'Multitone Test',
        cn => '多音频测试',
        tw => '多音頻測試',
        fe => 'fMultitone Test',
    },

    #
    # Speed dial menu (from Call menu)
    #
    SpeedDial_title => {
        en => 'Speed Dial',
        cn => '快速拨号盘',
        tw => '快速撥號鍵',
        fe => 'fSpeed Dial',
    },
    SpeedDial_entry_title => {
        en => 'Speed Dial #%d',
        cn => '快速拨号盘# %d',
        tw => '快速撥號鍵# %d',
        fe => 'fSpeed Dial #%d',
    },
    SpeedDial_call => {
        en => 'Call',
        cn => '电话',
        tw => '通話',
        fe => 'fCall',
    },
    SpeedDial_add => {
        en => 'Add',
        cn => '增加',
        tw => '新增',
        fe => 'fAdd',
    },
    SpeedDial_delete => {
        en => 'Delete',
        cn => '删除',
        tw => '刪除',
        fe => 'fDelete',
    },
    SpeedDial_added__dialog => {
        en => 'Added entry %s',
        cn => '增加条目 %s',
        tw => '新增項目 %s',
        fe => 'fAdded entry %s',
    },
    SpeedDial_deleted__dialog => {
        en => 'Deleted entry %s',
        cn => '删除条目 %s',
        tw => '刪除項目 %s',
        fe => 'fDeleted entry %s',
    },
    SpeedDial_delete__question => {
        en => 'Delete entry %s?',
        cn => '确定删除条目? %s',
        tw => '確定刪除項目? %s',
        fe => 'fDelete entry %s?',
    },
    Menu_SpeedDial_view => {
        en => 'View',
        cn => '显示',
        tw => '顯示',
        fe => 'fView',
    },
    Menu_SpeedDial_change => {
        en => 'Change',
        cn => '更改',
        tw => '更改',
        fe => 'fChange',
    },
    Menu_SpeedDial_delete => {
        en => 'Delete',
        cn => '删除',
        tw => '刪除',
        fe => 'fDelete',
    },
    # Speed dial select menu (from phone book edit)
    SpeedDialSelect_title => {
        en => 'Set Speed Dial',
        cn => '设置快速拨号盘',
        tw => '設定快速撥號鍵',
        fe => 'fSet Speed Dial',
    },
    SpeedDialSelect_entry_title => {
        en => 'Set Speed Dial #%d',
        cn => '设置快速拨号盘# %d',
        tw => '設定快速撥號鍵# %d',
        fe => 'fSet Speed Dial #%d',
    },
    SpeedDialSelect_yes => {
        en => 'Yes',
        cn => '确定',
        tw => '確定',
        fe => 'fYes',
    },
    SpeedDialSelect_no => {
        en => 'No',
        cn => '取消',
        tw => '取消',
        fe => 'fNo',
    },
    # Shared speed dial text
    SpeedDial_empty => {
        en => '[empty]',
	cn => '[空]',
        tw => '[空]',
        fe => 'f[empty]',
    },

    #
    # Record voice to flash
    #
    RecordVoice_edit_title_type => {
        en => 'Edit recording name',
        cn => '编辑记录名',
        tw => '',
        fe => 'fEdit recording name',
    },
    RecordVoice_new_recording_name => {
        en => 'New name',
        cn => '新名称',
        tw => '',
        fe => 'fNew name',
    },
    RecordVoice_deleted__dialog => {
        en => 'Deleted recording %s',
        cn => '已删除的记录%s',
        tw => '',
        fe => 'fDeleted recording %s',
    },
    RecordVoice_delete__question => {
        en => 'Delete recording %s?',
        cn => '删除录音%s?',
        tw => '',
        fe => 'fDelete recording %s?',
    },
    RecordVoice_play => {
        en => 'Play',
        cn => '播放',
        tw => '',
        fe => 'fPlay',
    },
    RecordVoice_playing_recording => {
        en => 'Playing recording %s',
        cn => '播放录音%s',
        tw => '',
        fe => 'fPlaying recording %s',
    },
    RecordVoice_edit_name => {
        en => 'Edit name',
        cn => '编辑姓名',
        tw => '',
        fe => 'fEdit name',
    },
    RecordVoice_delete => {
        en => 'Delete',
        cn => '删除',
        tw => '',
        fe => 'fDelete',
    },
    RecordVoice_new => {
        en => 'Record New',
        cn => '新录音',
        tw => '',
        fe => 'fRecord New',
    },
    RecordVoice_title => {
        en => 'Record voice',
        cn => '录音',
        tw => '',
        fe => 'fRecord voice',
    },

    #
    # Call start/stop/fail status
    #
    Call_Info => {
        en => 'Call Info.',
        cn => '电话信息',
        tw => '通話訊息',
        fe => 'fCall Info.',
    },
    Call_Failed => {
        en => 'Call Failed',
        cn => '呼叫失败',
        tw => '通話失敗',
        fe => 'fCall Failed',
    },
    Call_Invalid_Number => {
        en => 'Invalid Number',
        cn => '号码无效',
        tw => '號碼無效',
        fe => '',
    },
    Call_Failed_Reason_Unknown => {
        en => 'Reason unknown',
        cn => '原因不明',
        tw => '原因不明',
        fe => 'fReason unknown',
    },
    Call_Failed_Reason_Code => {
        en => 'Error Code %d',
        cn => '错误编码%d',
        tw => '錯誤碼',
        fe => 'fError Code %d',
    },
    Call_Failed_Reason_Too_Many => {
        en => 'Too many calls',
        cn => '呼叫过多',
        tw => '通話數目過多',
        fe => 'fToo many calls',
    },
    Call_Failed_Reason_Call_Pending => {
        en => 'Other call pending',
        cn => '其他通话正在进行',
        tw => '還有其他通話正在進行',
        fe => 'fOther call pending',
    },
	Call_Failed_Reason_Wlan_Down => {
        en => 'Finding WLAN',
        cn => '搜寻无线网络',
        tw => '搜尋無線網路',
        fe => 'fFinding WLAN',
    },
    Call_Failed_Reason_Network_Down => {
        en => 'Finding network',
        cn => '搜寻网络',
        tw => '搜尋網路',
        fe => 'fFinding network',
    },
    Call_Failed_Reason_Not_Ready => {
        en => 'Not ready yet',
	    cn => '无网络',
        tw => '無網路',
        fe => 'Not ready yet',
    },
    Call_Failed_Reason_Unconfigured => {
        en => 'SIP Setup Error',
        cn => 'SIP设定错误',
        tw => 'SIP設定錯誤',
        fe => 'fSIP Setup Error',
    },
    Call_Failed_Reason_Bad_Phone_number => {
        en => 'Unknown callee',
	    cn => '无效拨号',
        tw => '無效撥號',
        fe => 'fUnknown callee',
    },
    Call_Failed_Reason_User_Busy => {
        en => 'Callee busy',
        cn => '对方忙',
        tw => '對方忙線中',
        fe => 'fCallee busy',
    },
    Call_Failed_Reason_User_Offline => {
        en => 'Callee offline',
        cn => '对方不在线',
        tw => '對方不在線上',
        fe => 'fCallee offline',
    },
    Call_Failed_Reason_Timeout => {
        en => 'No response',
        cn => '无回应',
        tw => '無回應',
        fe => 'fNo response',
    },
    Call_Failed_Reason_Declined => {
        en => 'Call declined',
        cn => '通话被拒绝',
        tw => '通話被拒絕',
        fe => 'fCall declined',
    },
    Call_Failed_Codec_Mismatch => {
        en => 'Codec mismatch',
        cn => '音频编码不匹配',
        tw => '語音編碼不同',
        fe => 'fCodec mismatch',
    },
    Call_Failed_Bad_Connection => {
        en => 'Poor connection',
        cn => '低质量连接',
        tw => '低品質連接',
        fe => 'fPoor connection',
    },
    Registration_Failed_Reason_Not_Yet => {
        en => 'Finding registrar',
        cn => '查找注册服务器',
        tw => '找尋註冊伺服器',
        fe => 'fFinding registrar',
    },
    Registration_Failed_Reason_Pending => {
        en => 'Registration pending',
        cn => '注册进行中',
        tw => '註冊進行中',
        fe => 'fRegistration pending',
    },
    Registration_Failed_Reason_Timeout => {
        en => 'Registration timeout',
        cn => '注册暂停',
        tw => '註冊超時',
        fe => 'fRegistration timeout',
    },
    Registration_Failed_Registrar_Address => {
        en => 'Registrar address error',
        cn => '注册服务器地址错误',
        tw => '註冊伺服器地址錯誤',
        fe => 'fRegistrar address error',
    },
    Registration_Failed_Misc_Error => {
        en => 'Registration error',
        cn => '注册错误',
        tw => '註冊錯誤',
        fe => 'Registration error',
    },
    Call_Error => {
        en => 'Call Error',
        cn => '通话出错',
        tw => '通話錯誤',
        fe => 'fCall Error',
    },
    Call_Error_Hold_Failed => {
        en => 'Hold failed',
        cn => '保持失败',
        tw => '保留失敗',
        fe => 'fHold failed',
    },
    Call_Error_Mute_Failed => {
        en => 'Mute failed',
        cn => '静音失败',
        tw => '靜音失敗',
        fe => 'fMute failed',
    },
    Call_Error_Conf_Failed => {
        en => 'Conference failed',
        cn => '会议失败',
        tw => '三方通話失敗',
        fe => 'fConference failed',
    },
    Call_Done => {
        en => 'Call Done',
        cn => '通话完成',
        tw => '通話完成',
        fe => 'fCall Done',
    },
    Call_Done_Time => {
        en => 'Call Done %s',
        cn => '%s通话完成',
        tw => '%s通話完成',
        fe => 'fCall Done %s',
    },
    Call_Change_Failed => {
        en => 'Call Change Failed',
        cn => '电话变更失败',
        tw => '通話變跟司敗',
        fe => 'fCall Change Failed',
    },
    Call_Failed_Reason_Remote => {
        en => 'Remote failure',
        cn => '远程失败',
        tw => '',
        fe => 'fRemote failure',
    },
    SubscribeMwi_Failed_Misc_Error => {
        en => 'MWI subscribe error',
        cn => 'MWI订阅错误',
        tw => 'MWI訂閱錯誤',
        fe => 'fMWI subscribe error',
    },
    Call_Failed_Reason_IP_Down => {
        en => 'Finding IP',
        cn => '发现IP',
        tw => '搜尋網路位址',
        fe => 'fFinding IP',
    },
    Call_Failed_Reason_ResolvingSipServer => {
        en => 'Finding SIP server',
        cn => '发现SIP服务器',
        tw => '搜尋SIP伺服器',
        fe => 'fFinding SIP server',
    },
    Call_Failed_Reason_ResolvingProxyServer => {
        en => 'Finding proxy server',
        cn => '发现代理服务器',
        tw => '搜尋代理伺服器',
        fe => 'fFinding proxy server',
    },
    Call_Failed_Reason_ResolvingStunServer => {
        en => 'Finding STUN server',
        cn => '发现STUN服务器',
        tw => '搜尋STUN伺服器',
        fe => 'fFinding STUN server',
    },
    Call_Failed_Reason_ResolvingNatTraversal => {
        en => 'Finding firewall',
        cn => '发现防火墙',
        tw => '搜尋防火牆',
        fe => 'fFinding firewall',
    },
    Call_Failed_Remote_MiscError => {
        en => 'Remote Call Released',
        cn => '对方挂断',
        tw => '對方切斷通話',
        fe => 'fRemote Call Released',
    },
    Call_Failed_Remote_Forbidden => {
        en => 'Callee forbidden',
        cn => '禁止呼叫',
        tw => '禁止呼叫',
        fe => 'fCallee forbidden',
    },
    Call_Transferred => {
        en => 'Call transferred',
        cn => '电话已转接',
        tw => '通話已轉接 ',
        fe => 'fCall transferred',
    },

    #
    # Power/battery/charger dialogs
    #
    Battery_Charger_Inserted => {
        en => 'Charger Inserted',
        cn => '充电器已插入',
        tw => '充電器已插入',
        fe => 'fCharger Inserted',
    },
    Battery_Low_Warning => {
        en => 'Battery Low',
        cn => '电量低',
        tw => '低電量',
        fe => 'fBattery Low',
    },
    Battery_Recharge => {
        en => 'Recharge Battery',
        cn => '电池充电',
        tw => '電池充電',
        fe => 'fRecharge Battery',
    },
    Battery_Temp_Too_High => {
        en => 'Battery temp too high',
        cn => '电池温度太高',
        tw => '電池溫度太高',
        fe => 'fBattery temp too high',
    },
    Battery_Chip_Temp_Too_High => {
        en => 'Chip temp too high',
        cn => '芯片温度太高',
        tw => '晶片溫度太高',
        fe => 'fChip temp too high',
    },

    #
    # Speakerphone enable menu
    #
    Menu_Setup_Speakerphone_title => {
        en => 'Speakerphone',
        cn => '扬声器',
        tw => '免持聽筒',
        fe => 'fSpeakerphone',
    },
    Menu_Setup_Speakerphone_disable => {
        en => 'Disable',
        cn => '关闭',
        tw => '關閉',
        fe => 'fDisable',
    },
    Menu_Setup_Speakerphone_enable => {
        en => 'Enable',
        cn => '打开',
        tw => '啟用',
        fe => 'fEnable',
    },

    #
    # IP setup menu
    #
    Menu_NetworkSetupAutoIP => {
        en => 'Auto IP (DHCP)',
        cn => '动态IP(DHCP)',
        tw => '動態網路地址',
        fe => 'fAuto IP (DHCP)',
    },
    Network_Defaults => {
        en => 'Set to defaults',
        cn => '设置成默认值',
        tw => '設定為默認值',
        fe => 'fSet to defaults',
    },
    Menu_NetworkSetupAutoIP_title => {
        en => 'Auto IP (DHCP)',
        cn => '动态IP(DHCP)',
        tw => '動態網路地址',
        fe => 'fAuto IP (DHCP)',
    },
    AutoIP_DHCP => {
        en => 'DHCP',
        cn => 'DHCP',
        tw => '',
        fe => 'fDHCP',
    },
    AutoIP_StaticIP => {
        en => 'Static IP',
        cn => '静态IP',
        tw => '靜態網路地址',
        fe => 'fStatic IP',
    },
    AutoIP_PPPOE => {
        en => 'PPPOE',
        cn => 'PPPOE',
        tw => '',
        fe => 'fPPPOE',
    },
    PPPOE_Enter_Username => {
        en => 'Username',
        cn => '用户名',
        tw => '用戶名',
        fe => 'fUsername',
    },
    PPPOE_Enter_Password => {
        en => 'Password',
        cn => '密码',
        tw => '密碼',
        fe => 'fPassword',
    },
    Network_IP => {
        en => 'IP address',
        cn => 'IP地址',
        tw => '網路地址',
        fe => 'fIP address',
    },
    Network_Netmask => {
        en => 'Netmask',
        cn => '子网掩码',
        tw => '子網路遮罩',
        fe => 'fNetmask',
    },
    Network_Gateway => {
        en => 'Gateway',
        cn => '网关',
        tw => '',
        fe => 'fGateway',
    },
    Network_Dns => {
        en => 'DNS',
        cn => 'DNS',
        tw => '域名解析服務器',
        fe => 'fDNS',
    },
    Network_Enter_IP_Address => {  # for generic enter IP address popup
        en => 'Enter IP Address',
        cn => '输入IP地址',
        tw => '輸入網路地址',
        fe => 'fEnter IP Address',
    },
    Enter_Port_Number => { # for generic popup?
        en => 'Enter Port No.',
        cn => '输入端口号',
        tw => '輸入端口號',
        fe => 'fEnter Port No.',
    },
    Network_Enter_Static_IP_Address => {  # more clear for the static ip
        en => 'Enter Static IP address',
        cn => '输入静态IP 地址',
        tw => '輸入靜態網路地址',
        fe => 'fEnter Static IP address',
    },
    Network_Enter_Netmask => {
        en => 'Enter Netmask',
        cn => '输入子网掩码',
        tw => '輸入子網路遮罩',
        fe => 'fEnter Netmask',
    },

    #
    # VoIP setup menu
    #
    VoipSetup_new_profile_name => {
        en => 'New Profile Name',
        cn => 'Profile名称',
        tw => 'Profile 名稱',
        fe => 'fNew Profile Name',
    },
    Menu_VoipSetup_SipServer => {
        en => 'SIP Server',
        cn => 'SIP服务器',
        tw => 'SIP伺服器',
        fe => 'fSIP Server',
    },
    Menu_VoipSetup_NAT_Traversal => {
        en => 'NAT traversal',
        cn => '穿越NAT方式',
        tw => 'NAT穿越方式',
        fe => 'fNAT traversal',
    },
    Menu_VoipSetup_StunServer => {
        en => 'STUN Server',
        cn => 'STUN服务器',
        tw => 'STUN伺服器',
        fe => 'fSTUN Server',
    },
    Menu_VoipSetup_OutboundProxy => {
        en => 'Outbound Proxy',
        cn => 'Outbound代理',
        tw => 'Outbound代理器',
        fe => 'fOutbound Proxy',
    },
    Menu_VoipSetup_Expire => {
        en => 'Expire',
        cn => '过期时间',
        tw => '過期時間',
        fe => '',
    },
    Menu_VoipSetup_VOIP_Display_Name => {
        en => 'Display Name',
        cn => '显示名称',
        tw => '名稱顯示',
        fe => 'fDisplay Name',
    },

    Menu_VoipSetup_VOIP_Display_Name_Default => {
        en => 'ZyXEL V630',
        cn => 'ZyXEL V630',
        tw => 'ZyXEL V630',
        fe => 'ZyXEL V630',
    },
    Menu_VoipSetup_Our_Phone_Number => {
        en => 'Phone Number',
        cn => '电话号码',
        tw => '電話號碼',
        fe => 'fPhone Number',
    },
    Menu_VoipSetup_ProxyServer => {
        en => 'SIP Proxy',
        cn => 'SIP代理',
        tw => 'SIP代理器',
        fe => 'fSIP Proxy',
    },
    Menu_VoipSetup_SipServer_title => {
        en => 'SIP Server Setup',
        cn => 'SIP服务器设定',
        tw => 'SIP伺服器設定',
        fe => 'fSIP Server Setup',
    },
    Voip_SIP_IP => {
        en => 'SIP Address',
        cn => 'SIP地址',
        tw => 'SIP伺服器地址',
        fe => 'fSIP Address',
    },
    Voip_SIP_Port => {
        en => 'SIP Port',
        cn => 'SIP端口',
        tw => 'SIP端口',
        fe => 'fSIP Port',
    },
    Menu_VoipSetup_OutboundProxy_title => {
        en => 'Outbound Setup',
        cn => 'Outbound设定',
        tw => 'Outbound設定',
        fe => 'fOutbound Setup',
    },
    Voip_OutboundProxy_IP => {
        en => 'Outbound Address',
        cn => 'Outbound地址',
        tw => 'Outbound地址',
        fe => 'fOutbound Address',
    },
    Voip_OutboundProxy_Port => {
        en => 'Outbound Port',
        cn => 'Outbound端口',
        tw => 'Outbound端口',
        fe => 'fOutbound Port',
    },
    Menu_VoipSetup_StunServer_title => {
        en => 'STUN Setup',
        cn => 'STUN设定',
        tw => 'STUN伺服器設定',
        fe => 'fSTUN Setup',
    },
    Voip_STUN_IP => {
        en => 'STUN Address',
        cn => 'STUN地址',
        tw => 'STUN地址',
        fe => 'fSTUN Address',
    },
    Voip_STUN_Port => {
        en => 'STUN Port',
        cn => 'STUN端口',
        tw => 'STUN 端口',
        fe => 'fSTUN Port',
    },
    Voip_NAT_Keep_Alive_Time => {
        en => 'NAT Keep Alive Time',
        cn => 'NAT激活时长',
        tw => 'NAT存活時間',
        fe => 'fNAT Keep Alive Time',
    },
    Menu_VoipSetup_ProxyServer_title => {
        en => 'Proxy Setup',
        cn => '代理设定',
        tw => '代理器設定',
        fe => 'fProxy Setup',
    },
    Voip_Proxy_IP => {
        en => 'Proxy Address',
        cn => '代理地址',
        tw => '代理器地址',
        fe => 'fProxy Address',
    },
    Voip_Proxy_Port => {
        en => 'Proxy Port',
        cn => '代理端口',
        tw => '代理器端口號',
        fe => 'fProxy Port',
    },
    Voip_Proxy_User => {
        en => 'Proxy Username',
        cn => '代理用户名',
        tw => '代理器用戶名',
        fe => 'fProxy Username',
    },
    Voip_Proxy_Password => {
        en => 'Proxy Password',
        cn => '代理密码',
        tw => '代理器密碼',
        fe => 'fProxy Password',
    },

    Voip_Our_Phone_Number => {
        en => 'Phone Number',
        cn => '电话号码',
        tw => '電話號碼',
        fe => 'fPhone Number',
    },
    Voip_Enter_Port_Number => { # for generic popup?
        en => 'Enter Port No.',
        cn => '输入端口号',
        tw => '輸入端口號',
        fe => 'fEnter Port No.',
    },
    Voip_Enter_NAT_Keep_Alive_Time => {
        en => 'Enter Time',
        cn => '输入时间',
        tw => '輸入時間',
        fe => 'fEnter Time',
    },
    Voip_Enter_User_Name => {
        en => 'Enter Username',
        cn => '输入用户名',
        tw => '輸入用戶名',
        fe => 'fEnter Username',
    },
    Voip_Enter_Proxy_Password => {
        en => 'Enter Proxy Password',
        cn => '输入代理的密码',
        tw => '輸入代理器密碼',
        fe => 'fEnter Proxy Password',
    },
    Voip_Enter_Our_Phone_Number => {
        en => 'Enter Phone Number',
        cn => '输入电话号码',
        tw => '輸入電話號碼',
        fe => 'fEnter Phone Number',
    },

    Voip_High_Compression => {
        en => 'High Compression',
        cn => '高压缩',
        tw => '',
        fe => 'fHigh Compression',
    },
    Menu_Voip_High_Compression => {
        en => 'High Compression',
        cn => '高压缩',
        tw => '',
        fe => 'fHigh Compression',
    },
    #Voip_Enter_Compression_Choice => {
    #    en => '1=Allow, 0=Not',
    #    fe => '1=Allow, 0=Not',
    #},
    Voip_High_Compression_Off => {
        en => 'OFF',
        cn => '关闭',
        tw => '關閉',
        fe => 'fOFF',
    },
    Voip_High_Compression_On => {
        en => 'ON',
        cn => '打开',
        tw => '啟用',
        fe => 'fON',
    },

    #
    # Soft keys
    #
    Zcom_SoftKey_Empty => {
        en => '',
        cn => '',
        tw => '',
        fe => '',
    },
    Zcom_SoftKey_Up => {
        en => 'Up',
        cn => '向上',
        tw => '上鍵',
        fe => '',
    },
    Zcom_SoftKey_Down => {
        en => 'Down',
        cn => '向下',
        tw => '下鍵',
        fe => '',
    },
    Zcom_SoftKey_Name => {
        en => 'Name',
        cn => '电话簿',
        tw => '電話簿',
        fe => '',
    },
    Zcom_SoftKey_Left => {
        en => '<-',
        cn => '<-',
        tw => '',
        fe => '',
    },
    Zcom_SoftKey_Right => {
        en => '->',
        cn => '->',
        tw => '',
        fe => '',
    },
    SoftKey_Name => {
        en => 'Name',
        cn => '电话簿',
        tw => '電話簿',
        fe => 'fName',
    },
    SoftKey_Menu => {
        en => 'Menu',
        cn => '主菜单',
        tw => '選單',
        fe => 'fMenu',
    },
    SoftKey_Detail => {
        en => 'Detail',
        cn => '详细',
        tw => '詳細',
        fe => 'fDetail',
    },
    SoftKey_Close => {
        en => 'Close',
        cn => '关闭',
        tw => '關閉',
        fe => 'fClose',
    },
    SoftKey_Talk => {
        en => 'Talk',
        cn => '通话',
        tw => '通話',
        fe => 'fTalk',
    },
    SoftKey_Set => {
        en => 'Set',
        cn => '设定',
        tw => '設定',
        fe => 'fSet',
    },
    SoftKey_Back => {
        en => 'Back',
        cn => '后退',
        tw => '後退',
        fe => 'fBack',
    },
    SoftKey_Exit => {
        en => 'Exit',
        cn => '退出',
        tw => '退出',
        fe => 'fExit',
    },
    SoftKey_Select => {
        en => 'Select',
        cn => '选择',
        tw => '選擇',
        fe => 'fSelect',
    },
    SoftKey_Done => {
        en => 'Done',
        cn => '完成',
        tw => '完成',
        fe => 'fDone',
    },
    SoftKey_Retry => {
        en => 'Retry',
        cn => '重试',
        tw => '重試',
        fe => 'fRetry',
    },
    SoftKey_Clear => {
        en => 'Clear',
        cn => '清除',
        tw => '清除',
        fe => 'fClear',
    },
    SoftKey_Yes => {
        en => 'Yes',
        cn => '确定',
        tw => '確定',
        fe => 'fYes',
    },
    SoftKey_Cancel => {
        en => 'Cancel',
        cn => '取消',
        tw => '取消',
        fe => 'fCancel',
    },
    SoftKey_Next => {
        en => 'Next',
        cn => '下一步',
        tw => '下一步',
        fe => 'fNext',
    },
    SoftKey_Stop => {
        en => 'Stop',
        cn => '中止',
        tw => '停止',
        fe => 'fStop',
    },
    SoftKey_Options => {
        en => 'Option',
        cn => '选项',
        tw => '選項',
        fe => '',
    },
    SoftKey_Set => {
        en => 'Set',
        cn => '设定',
        tw => '設定',
        fe => 'fSet',
    },
    SoftKey_No => {
        en => 'No',
        cn => '取消',
        tw => '取消',
        fe => 'fNo',
    },
    SoftKey_Answer => {
        en => 'Answer',
        cn => '接听',
        tw => '接聽',
        fe => 'fAnswer', 
    },
    SoftKey_UseSpeaker => {
        en => 'Speaker',
        cn => '扬声器',
        tw => '免持',
        fe => 'fSpeaker',
    },
    SoftKey_UseReceiver => {
        en => 'Receiver',
        cn => '接收器',
        tw => '手持',
        fe => 'fReceiver',
    },
    SoftKey_SwitchCall => {
        en => 'Switch',
        cn => '切换',
        tw => '切換',
        fe => 'fSwitch',
    },
    SoftKey_Next => {
    	 en =>  'Next',
    	 cn =>  '下一步',
    	 tw =>  '下一步',
    	 fe =>  'fNext',
    },

	#
    # Symbol Selection Dialog
    #
    Symbol_Selction_title => {
        en => 'Symbol Selection',
        cn => '符号选择',
        tw => '符號選擇',
        fe => 'fSymbol Selection',
    },

    #
    # Firmware upgrade menus
    #
    FirmwareCheckMessage => {
        en => 'Checking upgrades',
        cn => '升级检查',
        tw => '升級檢查',
        fe => 'fChecking upgrades',
    },
    Proceed_With_Upgrade_title => {
        en => 'Proceed?',
        cn => '进行?',
        tw => '進行 ?',
        fe => 'fProceed?',
    },
    Upgrade_Needed_Proceed => {
        en => 'Upgrade needed. Proceed?',
        cn => '有新固件，是否升级?',
        tw => '有新韌體，是否升級',
        fe => 'fUpgrade needed. Proceed?',
    },
    Upgrade_Unneeded_Proceed => {
        en => 'Firmware up to date. Proceed anyway?',
        cn => '固件已经最新，仍需升级?',
        tw => '韌體已是最新，仍要升級?',
        fe => 'fFirmware up to date. Proceed anyway?',
    },
    FirmwareUpgradeMessage => {
        en => 'Getting upgrade',
        cn => '得到升级',
        tw => '升級中',
        fe => 'Getting upgrade',
    },
    FirmwareUpgradeDoneMessage => {
        en => 'Upgrade done OK.',
        cn => '升级完成。',
        tw => '升級完成',
        fe => 'fUpgrade done OK.',
    },
    FirmwareUpgradeFailedMessage => {
        en => 'Upgrade FAILED',
        cn => '升级失败',
        tw => '升級失敗',
        fe => 'fUpgrade FAILED',
    },

    #
    # Dialog text
    #
    Dialog_text_error => {
        en => 'Error',
        cn => '错误',
        tw => '錯誤',
        fe => 'fError',
    },
    Dialog_text_not_done => {
        en => 'Not done',
        cn => '撤销',
        tw => '取消',
        fe => 'fNot done',
    },

    #
    # For Wifi Protected Setup (SimpleConfig)
    #
    Menu_Setup_wlan_autoconfig_in_progress_title => {
        en => 'WPS...',
        cn => 'WPS...',
        tw => '',
        fe => 'fWPS...',
    },
    Menu_Setup_wlan_autoconfig_timeout => {
        en => 'WPS timeout ... try again?',
        cn => 'WPS超时... 重试?',
        tw => 'WPS超時....重試',
        fe => 'fWPS timeout ... try again?',
    },

    Menu_Setup_wlan_autoconfig_reject => {
        en => 'WPS rejected ... try again?',
        cn => 'WPS被拒绝... 重试?',
        tw => 'WPS被拒絕...重試',
        fe => 'fWPS rejected ... try again?',
    },
    Menu_Setup_wlan_autoconfig => {
        #doesn't fit# en => 'WiFi Protected Setup',
        #doesn't fit# fe => 'fWiFi Protected Setup',
        en => 'WPS',
        cn => 'WPS',
        tw => '',
        fe => 'fWPS',
    },
    Menu_SimpleConfigMode_title => {
        en => 'WPS: do now:',
        cn => 'WPS: 现在开始',
        tw => 'WPS: 連接開始',
        fe => 'fWPS: do now:',
    },
    WlanScan_SimpleConfigModeChoice_button => {
        en => 'PBC mode',
        cn => 'PBC 方式',
        tw => 'PBC: 模式',
        fe => 'fPBC mode',
    },
    WlanScan_SimpleConfigModeChoice_PIN => {
        en => 'PIN mode %s',
        cn => 'PIN 方式%s',
        tw => 'PIN: 模式',
        fe => 'fPIN mode %s',
    },
    err_SimpleConfig_err => {
        en => 'WPS Error',
        cn => 'WPS 错误',
        tw => 'WPS: 錯誤',
        fe => 'fWPS Error',
    },
    err_SimpleConfig_toomany => {
        en => 'WPS Multiple APs',
        cn => '有多个WPS接入点',
        tw => '存在多個WPS APs',
        fe => 'fWPS Multiple APs',
    },
    Menu_Setup_wlan_autoconfig_in_progress_title => {
        en => 'WPS...',
        cn => 'WPS...',
        tw => 'WPS...',
        fe => 'fWPS...',
    },

    #
    # Call menus
    #
    CallIncoming_title => {
        en => 'Incoming Call',
        cn => '来电',
        tw => '來電',
        fe => 'fIncoming Call',
    },
    CallOutgoing_title => {
        en => 'Dialing...',
        cn => '拨号...',
        tw => '撥號中',
        fe => 'fDialing...',
    },
    CallOption_Unhold => {
        en => 'Unhold',
        cn => '释放保持',
        tw => '恢復',
        fe => 'fUnhold',
    },
    CallOption_Hold => {
        en => 'Hold',
        cn => '保持',
        tw => '保留',
        fe => 'fHold',
    },
    CallOption_Unmute => {
        en => 'Unmute',
        cn => '非静音',
        tw => '靜音取消',
        fe => 'fUnmute',
    },
    CallOption_Mute => {
        en => 'Mute',
        cn => '静音',
        tw => '靜音',
        fe => 'fMute',
    },
    CallOption_UseSpeaker => {
        en => 'Use Speaker',
        cn => '使用扬声器',
        tw => '免持',
        fe => 'fUse Speaker',
    },
    CallOption_UseReceiver => {
        en => 'Use Receiver',
        cn => '使用接收器',
        tw => '手持',
        fe => 'fUse Receiver',
    },
    CallOption_Conference => {
        en => 'Conference',
        cn => '会议',
        tw => '三方通話',
        fe => 'fConference',
    },
    CallOption_Call_transfer_dial => {
        en => 'Blind Transfer',
        cn => '非伴随转接',
        tw => '直接轉移',
        fe => 'fBlind Transfer',
    },
    CallOption_Call_transfer_join => {
        en => 'Attended Transfer',
        cn => '伴随转接',
        tw => '間接轉移',
        fe => 'fAttended Transfer',
    },
    CallOption_New_call => {
        en => 'New call',
        cn => '拨叫',
        tw => '新通話',
        fe => 'fNew call',
    },
    CallOption_Phone_book => {
        en => 'Phone Book',
        cn => '电话簿',
        tw => '電話簿',
        fe => 'fPhone Book',
    },
    CallOption_title => {
        en => 'Call Options',
        cn => '呼叫选项',
        tw => '選項',
        fe => 'fCall Options',
    },

    #
    # Telephone tone sets
    #   To be used, these must be listed in telephoneTone.c
    #
    TelephoneToneSet_title => {
        en => 'Telephone Tones',
        cn => '电话铃音',
        tw => '電話鈴聲',
        fe => 'fTelephone Tones',
    },
    TelephoneToneSet_Default => {
        en => 'Default',
        cn => '出厂设置',
        tw => '出廠設定',
        fe => 'fDefault',
    },
    TelephoneToneSet_NAmerica_Set1 => {
        en => 'NAmerica-1',
        cn => 'NAmerica-1',
        tw => '',
        fe => 'fNAmerica-1',
    },
    TelephoneToneSet_NAmerica_Set2 => {
        en => 'NAmerica-2',
        cn => 'NAmerica-2',
        tw => '',
        fe => 'fNAmerica-2',
    },
    TelephoneToneSet_MiddleEurope => {
        en => 'MiddleEurope',
        cn => 'MiddleEurope',
        tw => '',
        fe => 'fMiddleEurope',
    },

    #
    # Melody select menu
    #   See auplay/melodies.c
    #
    MelodySelect_title => {
        en => 'Select Melody',
        cn => '铃声选择',
        tw => '鈴聲選擇',
        fe => 'fSelect Melody',
    },
    MelodyName_Allegro => {
        en => 'Allegro',
        cn => 'Allegro',
        tw => '',
        fe => 'fAllegro',
    },
    MelodyName_Bach => {
        en => 'Bach',
        cn => 'Bach',
        tw => '',
        fe => 'fBach',
    },
    MelodyName_Beethoven_5th => {
        en => 'Beethoven 5th',
        cn => 'Beethoven 5th',
        tw => '',
        fe => 'fBeethoven 5th',
    },
    MelodyName_Birthday => {
        en => 'Birthday',
        cn => 'Birthday',
        tw => '',
        fe => 'fBirthday',
    },
    MelodyName_Carmen => {
        en => 'Carmen',
        cn => 'Carmen',
        tw => '',
        fe => 'fCarmen',
    },
    MelodyName_Chime => {
        en => 'Chime',
        cn => 'Chime',
        tw => '',
        fe => 'fChime',
    },
    MelodyName_Classica => {
        en => 'Classica',
        cn => 'Classica',
        tw => '',
        fe => 'fClassica',
    },
    MelodyName_Country => {
        en => 'Country',
        cn => 'Country',
        tw => '',
        fe => 'fCountry',
    },
    MelodyName_Folk => {
        en => 'Folk',
        cn => 'Folk',
        tw => '',
        fe => 'fFolk',
    },
    MelodyName_Jazz => {
        en => 'Jazz',
        cn => 'Jazz',
        tw => '',
        fe => 'fJazz',
    },
    MelodyName_Jinglebell => {
        en => 'Jinglebell',
        cn => 'Jinglebell',
        tw => '',
        fe => 'fJinglebell',
    },
    MelodyName_Lullaby => {
        en => 'Lullaby',
        cn => 'Lullaby',
        tw => '',
        fe => 'fLullaby',
    },
    MelodyName_Mozart => {
        en => 'Mozart',
        cn => 'Mozart',
        tw => '',
        fe => 'fMozart',
    },
    MelodyName_Reggae => {
        en => 'Reggae',
        cn => 'Reggae',
        tw => '',
        fe => 'fReggae',
    },
    MelodyName_Ring_1 => {
        en => 'Ring 1',
        cn => '铃音1',
        tw => '鈴聲一',
        fe => 'fRing 1',
    },
    MelodyName_Ring_2 => {
        en => 'Ring 2',
        cn => '铃音2',
        tw => '鈴聲二',
        fe => 'fRing 2',
    },
    MelodyName_Ring_3 => {
        en => 'Ring 3',
        cn => '铃音3',
        tw => '鈴聲三',
        fe => 'fRing 3',
    },
    MelodyName_Ring_4 => {
        en => 'Ring 4',
        cn => '铃音4',
        tw => '鈴聲四',
        fe => 'fRing 4',
    },
    MelodyName_Rock => {
        en => 'Rock',
        cn => 'Rock',
        tw => '',
        fe => 'fRock',
    },
    MelodyName_Sax => {
        en => 'Sax',
        cn => 'Sax',
        tw => '',
        fe => 'fSax',
    },
    MelodyName_Xmas => {
        en => 'Xmas',
        cn => 'Xmas',
        tw => '',
        fe => 'fXmas',
    },

    #
    # Recording select menu
    #
    RecordingSelect_title => {
        en => 'Select Recording',
        cn => '选择录音',
        tw => '選擇錄音',
        fe => 'fSelect Recording',
    },
    RecordingName_None => {
        en => 'None',
        cn => '无',
        tw => '無',
        fe => 'None',
    },

    #
    # Phone number types
    #
    PhoneNumType_Home => {
        en => 'Home',
        cn => '家庭',
        tw => '家庭',
        fe => 'fHome',
    },
    PhoneNumType_Cell => {
        en => 'Cell',
        cn => '单位',
        tw => '單位',
        fe => 'fCell',
    },
    PhoneNumType_Work => {
        en => 'Work',
        cn => '工作',
        tw => '工作',
        fe => 'fWork',
    },
    PhoneNumType_General => {
        en => 'General',
        cn => '标准',
        tw => '標準',
        fe => 'fGeneral',
    },
    PhoneNumType_Other => {
        en => 'Other',
        cn => '其他',
        tw => '其他',
        fe => 'fOther',
    },
    PhoneNumType_Restricted => {
        en => 'Restricted',
        cn => '受限',
        tw => '限制',
        fe => 'fRestricted',
    },

    #
    # Error messages
    #
    err_msg_title => {
        en => 'ERROR',
        cn => '错误',
        tw => '錯誤',
        fe => 'fERROR',
    },
    err_flash_full => {
        en => 'Storage full; delete something',
        cn => '内存满；删除一些',
        tw => '記憶體已滿,請釋放',
        fe => 'fStorage full; delete something',
    },
    err_flash_busy => {
        en => 'Storage busy; try again',
        cn => '内存忙；再尝试',
        tw => '記憶體讀寫中，請稍後重試',
        fe => 'fStorage busy; try again',
    },
    err_phbook_full => {
        en => 'Phone book full',
        cn => '电话簿已满',
        tw => '電話簿已滿',
        fe => 'fPhone book full',
    },
    err_phone_number_in_use => {
        en => 'Phone number in use',
        cn => '电话号码正在使用',
        tw => '電話號碼正在只用',
        fe => 'fPhone number in use',
    },
    err_phbook_name_in_use => {
        en => 'Name already in use',
        cn => '该名称已经在使用',
        tw => '該名稱已經在使用',
        fe => 'fName already in use',
    },
	err_SimpleConfig_busy => {
        en => 'SimpleConfig still busy',
        cn => 'SimpleConfig已在进行',
        tw => 'SimpleConfig正進行中',
        fe => 'fSimpleConfig still busy',
    },

};

#
# Character set page names (displayed to user).
#       Page 0 is reserved.
#       Page 1 is Abc meta-mode (ABC or abc depending on context)
#       Page 2 is ABC mode (upper case letters).
#       Page 3 is abc mode (lower case letters).
#       Page 4 is EUR mode (upper case europe letters). 
#       Page 5 is eur mode (lower case europe letters).
#       Page 6 is 123 mode (numerals).
#       Page 7 is symbols mode.
#       Additional pages can be added for other characters;
#       they should be defined in LangCharSeq below.
#
my $LangCharPageNames = {
    en => [
        "", "abc", "ABC", "123", "!@#",
    ],
    cn => [
        "", "abc", "ABC", "123", "!@#",
    ],
    tw => [
        "", "abc", "ABC", "123", "!@#",
    ],
    fe => [
        "", "abc", "ABC", "123", "!@#",
    ],
};

#
# Language dependent sequence of characters from pressing each key
# depending on the page.
# For keys 0 and 1-9 only; the * and # keys do special things.
# These character sequences will be shown to the user in one of
# the views, which unfortunately (currently at least) doesn't show
# the mapping for key 0 (due to lack of space).... because of that,
# it is best to keep actions for key 0 as simple as possible.
# Try not to have more than FIVE characters per key per page
# because more won't show well with the page view and is of course
# more pressing of the key anyway.
#
my $LangCharSeq = {
    en => [
        [ ],            # 0 == reserved
        [               # 1 == abc page 
            # Keep key 0 simple since it is not show in page view
            ['0', '+', ' '],                                              # 0 key
            # In letter page, put most common natural language punctuation.
            [qw(. # , 1 ` ? ! - & _ $ €)],                                # 1 key
            # Keys 2...9 have traditional letter assignments
            [qw(a b c 2)],                                                # 2 key
            [qw(d e f 3)],                                                # 3 key
            [qw(g h i 4)],                                                # 4 key
            [qw(j k l 5)],                                                # 5 key
            [qw(m n o 6)],                                                # 6 key
            [qw(p q r s 7)],                                              # 7 key
            [qw(t u v 8)],                                                # 8 key
            [qw(w x y z 9)],                                              # 9 key
            [qw(* @)],                                                    # * key
        ], 
        [               # 2 == ABC page 
            # Keep key 0 simple since it is not show in page view
            ['0', '+', ' '],                                              # 0 key
            # In letter page, put most common natural language punctuation.
            [qw(. # , 1 ` ? ! - & _ $ €)],                                # 1 key
            # Keys 2...9 have traditional letter assignments
            [qw(A B C 2)],                                                # 2 key
            [qw(D E F 3)],                                                # 3 key
            [qw(G H I 4)],                                                # 4 key
            [qw(J K L 5)],                                                # 5 key
            [qw(M N O 6)],                                                # 6 key
            [qw(P Q R S 7)],                                              # 7 key
            [qw(T U V 8)],                                                # 8 key
            [qw(W X Y Z 9)],                                              # 9 key
            [qw(* @)],                                                    # * key
        ],
        [               # 5 == 123 page 
            # Keep key 0 simple since it is not show in page view
            ['0', '+', ' '],                                            # 0 key
            # In letter page, put most common natural language punctuation.
            ['1'],     # 1 key
            # Keys 2...9 have traditional letter assignments
            ['2'],                                                      # 2 key
            ['3'],                                                      # 3 key
            ['4'],                                                      # 4 key
            ['5'],                                                      # 5 key
            ['6'],                                                      # 6 key
            ['7'],                                                      # 7 key
            ['8'],                                                      # 8 key
            ['9'],                                                      # 9 key
            [qw(. *)],                                                  # * key
        ], 
        [ ],            # 6 == symbol
    ],          # end en
    cn => [
        [ ],            # 0 == reserved
        [               # 1 == abc page 
            # Keep key 0 simple since it is not show in page view
            ['0', '+', ' '],                                              # 0 key
            # In letter page, put most common natural language punctuation.
            [qw(. # , 1 ` ? ! - & _ ¥ $)],                                # 1 key
            # Keys 2...9 have traditional letter assignments
            [qw(a b c 2)],                                                # 2 key
            [qw(d e f 3)],                                                # 3 key
            [qw(g h i 4)],                                                # 4 key
            [qw(j k l 5)],                                                # 5 key
            [qw(m n o 6)],                                                # 6 key
            [qw(p q r s 7)],                                              # 7 key
            [qw(t u v 8)],                                                # 8 key
            [qw(w x y z 9)],                                              # 9 key
            [qw(* @)],                                                    # * key
        ], 
        [               # 2 == ABC page 
            # Keep key 0 simple since it is not show in page view
            ['0', '+', ' '],                                              # 0 key
            # In letter page, put most common natural language punctuation.
            [qw(. # , 1 ` ? ! - & _ ¥ $)],                                # 1 key
            # Keys 2...9 have traditional letter assignments
            [qw(A B C 2)],                                                # 2 key
            [qw(D E F 3)],                                                # 3 key
            [qw(G H I 4)],                                                # 4 key
            [qw(J K L 5)],                                                # 5 key
            [qw(M N O 6)],                                                # 6 key
            [qw(P Q R S 7)],                                              # 7 key
            [qw(T U V 8)],                                                # 8 key
            [qw(W X Y Z 9)],                                              # 9 key
            [qw(* @)],                                                    # * key
        ],
        [               # 5 == 123 page 
            # Keep key 0 simple since it is not show in page view
            ['0', '+', ' '],                                            # 0 key
            # In letter page, put most common natural language punctuation.
            ['1'],     # 1 key
            # Keys 2...9 have traditional letter assignments
            ['2'],                                                      # 2 key
            ['3'],                                                      # 3 key
            ['4'],                                                      # 4 key
            ['5'],                                                      # 5 key
            ['6'],                                                      # 6 key
            ['7'],                                                      # 7 key
            ['8'],                                                      # 8 key
            ['9'],                                                      # 9 key
            [qw(. *)],                                                  # * key
        ], 
        [ ],            # 6 == symbol
    ],          # end cn
    tw => [
        [ ],            # 0 == reserved
        [               # 1 == abc page 
            # Keep key 0 simple since it is not show in page view
            ['0', '+', ' '],                                              # 0 key
            # In letter page, put most common natural language punctuation.
            [qw(. # , 1 ` ? ! - & _ ¥ $)],                                # 1 key
            # Keys 2...9 have traditional letter assignments
            [qw(a b c 2)],                                                # 2 key
            [qw(d e f 3)],                                                # 3 key
            [qw(g h i 4)],                                                # 4 key
            [qw(j k l 5)],                                                # 5 key
            [qw(m n o 6)],                                                # 6 key
            [qw(p q r s 7)],                                              # 7 key
            [qw(t u v 8)],                                                # 8 key
            [qw(w x y z 9)],                                              # 9 key
            [qw(* @)],                                                    # * key
        ], 
        [               # 2 == ABC page 
            # Keep key 0 simple since it is not show in page view
            ['0', '+', ' '],                                              # 0 key
            # In letter page, put most common natural language punctuation.
            [qw(. # , 1 ` ? ! - & _ ¥ $)],                                # 1 key
            # Keys 2...9 have traditional letter assignments
            [qw(A B C 2)],                                                # 2 key
            [qw(D E F 3)],                                                # 3 key
            [qw(G H I 4)],                                                # 4 key
            [qw(J K L 5)],                                                # 5 key
            [qw(M N O 6)],                                                # 6 key
            [qw(P Q R S 7)],                                              # 7 key
            [qw(T U V 8)],                                                # 8 key
            [qw(W X Y Z 9)],                                              # 9 key
            [qw(* @)],                                                    # * key
        ],
        [               # 5 == 123 page 
            # Keep key 0 simple since it is not show in page view
            ['0', '+', ' '],                                            # 0 key
            # In letter page, put most common natural language punctuation.
            ['1'],     # 1 key
            # Keys 2...9 have traditional letter assignments
            ['2'],                                                      # 2 key
            ['3'],                                                      # 3 key
            ['4'],                                                      # 4 key
            ['5'],                                                      # 5 key
            ['6'],                                                      # 6 key
            ['7'],                                                      # 7 key
            ['8'],                                                      # 8 key
            ['9'],                                                      # 9 key
            [qw(. *)],                                                  # * key
        ], 
        [ ],            # 6 == symbol
    ],          # end tw
    fe => [
        [ ],            # 0 == reserved
        [               # 1 == abc page 
            # Keep key 0 simple since it is not show in page view
            ['0', '+', ' '],                                              # 0 key
            # In letter page, put most common natural language punctuation.
            [qw(. # , 1 ` ? ! - & _ € $)],                                # 1 key
            # Keys 2...9 have traditional letter assignments
            [qw(a b c 2)],                                                # 2 key
            [qw(d e f 3)],                                                # 3 key
            [qw(g h i 4)],                                                # 4 key
            [qw(j k l 5)],                                                # 5 key
            [qw(m n o 6)],                                                # 6 key
            [qw(p q r s 7)],                                              # 7 key
            [qw(t u v 8)],                                                # 8 key
            [qw(w x y z 9)],                                              # 9 key
            [qw(* @)],                                                    # * key
        ], 
        [               # 2 == ABC page 
            # Keep key 0 simple since it is not show in page view
            ['0', '+', ' '],                                              # 0 key
            # In letter page, put most common natural language punctuation.
            [qw(. # , 1 ` ? ! - & _ € $)],                                # 1 key
            # Keys 2...9 have traditional letter assignments
            [qw(A B C 2)],                                                # 2 key
            [qw(D E F 3)],                                                # 3 key
            [qw(G H I 4)],                                                # 4 key
            [qw(J K L 5)],                                                # 5 key
            [qw(M N O 6)],                                                # 6 key
            [qw(P Q R S 7)],                                              # 7 key
            [qw(T U V 8)],                                                # 8 key
            [qw(W X Y Z 9)],                                              # 9 key
            [qw(* @)],                                                    # * key
        ],
        [               # 5 == 123 page 
            # Keep key 0 simple since it is not show in page view
            ['0', '+', ' '],                                            # 0 key
            # In letter page, put most common natural language punctuation.
            ['1'],     # 1 key
            # Keys 2...9 have traditional letter assignments
            ['2'],                                                      # 2 key
            ['3'],                                                      # 3 key
            ['4'],                                                      # 4 key
            ['5'],                                                      # 5 key
            ['6'],                                                      # 6 key
            ['7'],                                                      # 7 key
            ['8'],                                                      # 8 key
            ['9'],                                                      # 9 key
            [qw(. *)],                                                  # * key
        ], 
        [ ],            # 6 == symbol
    ],          # end fe
};

#
# Other language dependent characters.
#
my $LangNumericDecimal = {
    en => ".",
    cn => ".",
    tw => ".",
    fe => ",",
};

my $LangNumericSeparator = {
    en => ",",
    cn => ",",
    tw => ",",
    fe => ".",
};

###########################################################################

my $Errors = 0;
my @Langs;
my $nLang = @$LangEnabled;
my $nStrings = 0;

foreach my $l ( @$LangEnabled ) {
    push(@Langs, $l->{id});
}

#
# Check for string arrays and count them too.
# Also convert all the strings to utf8 bytes.
#
foreach my $key ( keys(%$Strings) ) {
    my $n;
    foreach my $l ( @Langs ) {
        my $m;
        if ( ref($Strings->{$key}{$l}) eq 'ARRAY' ) {
            $m = @{$Strings->{$key}{$l}};
            for ( my $i = 0 ; $i < $m ; $i++ ) {
                $Strings->{$key}{$l}[$i]
                        = encode('utf8', $Strings->{$key}{$l}[$i]);
            }
        } else {
            $m = 1;
            $Strings->{$key}{$l} = encode('utf8', $Strings->{$key}{$l});
        }
        $n ||= $m;
        if ( $m != $n ) {
            print("Error: String{$key} lang $l has wrong number"
                . " of entries ($m vs $n)\n");
            $Errors++;
        }
    }
    $nStrings += $n;
}

my $nBits = 0;
while ( (1 << $nBits) <= $nStrings ) {
    $nBits++;
}

open(LANG_H, ">", "lang.h") || die("can't open/create lang.h\n");
open(LANG_C, ">", "lang_def.c") || die("can't open/create lang_def.c\n");

print LANG_H <<EOF;
/*
 * Language definition include file.  This file has macros
 * for all the language-dependent strings.  All strings should
 * be referred to using these macros.
 *
 * Warning: this file is automatically generated.  Do not edit!!
 */
#ifndef _LANG_H_
#define _LANG_H_

#define LANG_PACKED_IDX_BIT            $nBits
#define LANG_IDX_MASK                  ((1 << LANG_PACKED_IDX_BIT) - 1)

//
// Language Definitions
//
typedef enum _ZCOM_UI_PHONESETTING_LANGUAGE_
{
	ZCOM_UI_PHONESETTING_LANGUAGE_ENGLISH,
    ZCOM_UI_PHONESETTING_LANGUAGE_CHINESE,
	ZCOM_UI_PHONESETTING_LANGUAGE_UNKNOWN
} ZCOM_UI_PHONESETTING_LANGUAGE;

#define ZCOM_UI_PHONESETTING_LANGUAGE_DEFAULT ZCOM_UI_PHONESETTING_LANGUAGE_CHINESE 

typedef unsigned short LangIdx;

enum langPageEnum {
    /* The following six pages should be present for all languages: */
    langPage_eReserved,
    langPage_eMixedCase,    /* meta-mode "Abc" */
    langPage_eUpperCase,    /* ABC */
    langPage_eLowerCase,    /* abc */
    langPage_eEurUpperCase, /* EUR */
    langPage_eEurLowerCase, /* eur */
    langPage_eDigits,       /* 123 */
    langPage_eSymbols       /* symbols */
    /* Additional pages can be added for specific languages */
};

typedef struct _ZCOM_INPUT_METHOD_
{
    unsigned int        InputMethodIndex;   // Must from 1
    enum langPageEnum   InputMethodType;
} ZCOM_INPUT_METHOD;

#define ZCOM_INPUT_METHOD_CUSTOM_SEQUENCE_NUM_MAX  12  

#define ZCOM_INPUT_METHOD_CUSTOM_NUM  4

extern ZCOM_INPUT_METHOD g_ZComInputMethodCustom[ZCOM_INPUT_METHOD_CUSTOM_NUM];

extern unsigned int g_ZComInputMethodSequencePromptNeed;
 
EOF

print LANG_C <<EOF;
/*
 * Language string definition.  These tables define all the
 * language dependent strings
 *
 * Warning: this file is automatically generated.  Do not edit!!
 */

#include <assert.h>
#include <lang.h>
#include <hw.h>

static LangIdx LangNames[] = {
EOF

for ( my $i = 0 ; $i < @$LangEnabled ; $i++ ) {
    printf(LANG_H "#define LANG_TYPE_%-28s  $i\n",
                        $LangEnabled->[$i]{id});
    print(LANG_C "  LANG_Lang_$LangEnabled->[$i]{id}");
    print(LANG_C ",") if ( $i < @$LangEnabled - 1 );
    print(LANG_C "\n");
}
print(LANG_C "};\n");


my $strCnt   = 0;
my $tableIdx = 0;
my @packedStr;
my @lkupTbl;

#
# Create an empty string for LANG_NULL
#
printf(LANG_H "\n#define LANG_%-28s  (0)\n", "NULL");
for ( my $i = 0 ; $i < @Langs ; $i++ ) {
    $packedStr[$tableIdx][$i] .= "\0";
    push(@{$lkupTbl[$tableIdx][$i]}, 0);
}
$strCnt++;

#
# Now create the rest of the strings
#
foreach my $key ( sort(keys(%$Strings)) ) {
    my $i = 0;
    my $filled = 0;
    my $str;

    #
    # First make sure array strings will fit in the current packed
    # string table
    #
    foreach my $l ( @Langs ) {
        $str = $Strings->{$key}{$l};
        next if ( !defined($str) );
        $str = [$str] if ( ref($str) ne 'ARRAY' );
        my $len = length(join("\0", @$str));
        my $idx = length($packedStr[$tableIdx][$i]);
        $filled = 1 if ( $idx + $len >= 65534 );
        if ( $len >= 65534 ) {
            printf("Lang string $key lang $l is too big\n");
            $Errors++;
        }
        $i++;
    }

    #
    # Move to next table if this entry is too big
    #
    if ( $filled ) {
        $strCnt = 0;
        $tableIdx++;
    }

    $i = 0;
    foreach my $l ( @Langs ) {
        $str = $Strings->{$key}{$l};
        if ( !defined($str) ) {
            printf("Lang string $key is missing translation for $l\n");
            $Errors++;
            next;
        }
        $str = [$str] if ( ref($str) ne 'ARRAY' );

        foreach my $s ( @$str ) {
            my $idx = length($packedStr[$tableIdx][$i]);
            $packedStr[$tableIdx][$i] .= $s . "\0";
            push(@{$lkupTbl[$tableIdx][$i]}, $idx);
        }
        $i++;
    }
    printf(LANG_H "#define LANG_%-28s  (($tableIdx << LANG_PACKED_IDX_BIT) + $strCnt)\n", $key);
    $strCnt += @$str;
}

for ( my $i = 0 ; $i < @packedStr ; $i++ ) {
    for ( my $j = 0 ; $j < @Langs ; $j++ ) {
        print LANG_C <<EOF;

static const char PackedStr_${i}_${j}[] = {
EOF
        print LANG_C "    ";
        for ( my $k = 0 ; $k < length($packedStr[$i][$j]) ; $k++ ) {
            my $c = substr($packedStr[$i][$j], $k, 1);
            printf LANG_C "0x%02x", ord($c);
            if ( $k < length($packedStr[$i][$j]) - 1 ) {
                print LANG_C ",";
                if ( ($k % 12) == 11 ) {
                    print LANG_C "\n    ";
                }
            }
        }
        print LANG_C "\n};\n";
    }
}

for ( my $i = 0 ; $i < @packedStr ; $i++ ) {
    for ( my $j = 0 ; $j < @Langs ; $j++ ) {
        print LANG_C <<EOF;

static const unsigned short Lkup_${i}_${j}[] = {
EOF
        print LANG_C "    ";
        for ( my $k = 0 ; $k < @{$lkupTbl[$i][$j]} ; $k++ ) {
            printf LANG_C "%6d", $lkupTbl[$i][$j][$k];
            if ( $k < @{$lkupTbl[$i][$j]} - 1 ) {
                print LANG_C ",";
                if ( ($k % 8) == 7 ) {
                    print LANG_C "\n    ";
                }
            }
        }
        print LANG_C "\n};\n";
    }
}

$tableIdx++;
print LANG_C <<EOF;

static const struct {
    const unsigned short *lkup;
    const unsigned short lkupLen;
    const char *str;
} Lkup[$tableIdx][$nLang] = {
EOF

for ( my $i = 0 ; $i < @packedStr ; $i++ ) {
    print LANG_C "    {\n";
    for ( my $j = 0 ; $j < @Langs ; $j++ ) {
        print LANG_C <<EOF;
        {
            Lkup_${i}_${j},
            sizeof(Lkup_${i}_${j}) / sizeof(Lkup_${i}_${j}[0]),
            PackedStr_${i}_${j}
EOF
        print LANG_C "        }";
        print LANG_C "," if ( $j < @Langs - 1 );
        print LANG_C "\n";
    }
    print LANG_C "    }";
    print LANG_C "," if ( $i < @packedStr - 1 );
    print LANG_C "\n";
}
print LANG_C "};\n\n";

my $maxCharSeq = 0;
my $charMax = 0;
my $maxCharPages = 0;
for ( my $ilang = 0 ; $ilang < @$LangEnabled ; $ilang++ ) {
    my $lang = $LangEnabled->[$ilang]{id};
    for ( my $ipage = 0; $ipage < @{$LangCharSeq->{$lang}}; $ipage++ ) {
        $maxCharPages = ($ipage+1) if ( $maxCharPages <= $ipage );
        for ( my $k = 0 ; $k < @{$LangCharSeq->{$lang}[$ipage]} ; $k++ ) {
            my $chars = $LangCharSeq->{$lang}[$ipage][$k];
            $maxCharSeq = @$chars if ( $maxCharSeq < @$chars );
            for ( my $m = 0 ; $m < @$chars ; $m++ ) {
                my $c = ord($chars->[$m]);
                $charMax = $c if ( $charMax < $c );
            }
        }
    }
}
my $charType = "char";
$charType = "short" if ( $charMax >= 0x100 );
$charType = "int"   if ( $charMax >= 0x10000 );

print LANG_C "static const unsigned $charType LangCharSeq[$nLang][$maxCharPages][12/*keys 0 to 9 plus * and #*/][$maxCharSeq+1] = {\n";
for ( my $ilang = 0 ; $ilang < @$LangEnabled ; $ilang++ ) {
    my $lang = $LangEnabled->[$ilang]{id};
    print(LANG_C "    {\n");
    for ( my $ipage = 0; $ipage < @{$LangCharSeq->{$lang}}; $ipage++ ) {
        print(LANG_C "        {\n");
        print(LANG_C "            /* Lang $lang page $ipage key sequences */\n");
        for ( my $k = 0 ; $k < @{$LangCharSeq->{$lang}[$ipage]} ; $k++ ) {
            print(LANG_C "            { ");
            my $chars = $LangCharSeq->{$lang}[$ipage][$k];
            for ( my $m = 0 ; $m < @$chars ; $m++ ) {
                printf(LANG_C "0x%x,", ord($chars->[$m]));
            }
            print(LANG_C " },\n");
        }
        print(LANG_C "        },\n");
    }
    print(LANG_C "    },\n");
}
print LANG_C "};\n\n";

print LANG_C "static const unsigned short LangNumericDecimal[$nLang] = {\n";
for ( my $ilang = 0 ; $ilang < @$LangEnabled ; $ilang++ ) {
    my $lang = $LangEnabled->[$ilang]{id};
    printf(LANG_C "    0x%x", ord($LangNumericDecimal->{$lang}));
    print(LANG_C ",") if ( $ilang < @$LangEnabled -1 );
    print(LANG_C "\n");
}
print LANG_C "};\n\n";

print LANG_C "static const unsigned short LangNumericSeparator[$nLang] = {\n";
for ( my $ilang = 0 ; $ilang < @$LangEnabled ; $ilang++ ) {
    my $lang = $LangEnabled->[$ilang]{id};
    printf(LANG_C "    0x%x", ord($LangNumericSeparator->{$lang}));
    print(LANG_C ",") if ( $ilang < @$LangEnabled -1 );
    print(LANG_C "\n");
}
print LANG_C "};\n\n";

print LANG_C "static int LangNCharPages[$nLang] = { ";
for ( my $ilang = 0 ; $ilang < @$LangEnabled ; $ilang++ ) {
    my $lang = $LangEnabled->[$ilang]{id};
    my $nnames = @{$LangCharPageNames->{$lang}};
    printf(LANG_C "%d, ", $nnames);
}
print LANG_C "};\n\n";

print LANG_C "static const char *LangCharPageNames[$nLang][$maxCharPages] = {\n";
for ( my $ilang = 0 ; $ilang < @$LangEnabled ; $ilang++ ) {
    my $lang = $LangEnabled->[$ilang]{id};
    print LANG_C "    { ";
    for ( my $ipage = 0; $ipage < @{$LangCharSeq->{$lang}}; $ipage++ ) {
        printf(LANG_C "\"%s\", ", $LangCharPageNames->{$lang}[$ipage]);
    }
    print LANG_C " },\n";
}
print LANG_C "};\n\n";

print LANG_C <<EOF;

#include <keysym.h>
static int LangNum = 0;

void langTypeSet(unsigned int langNum)
{
    assert(langNum < $nLang);

    LangNum = langNum;
}

int langTypeGet(void)
{
    return LangNum;
}

unsigned int langTypeMaxGet(void)
{
    return sizeof(LangNames) / sizeof(LangNames[0]);
}

LangIdx langTypeNameGet(unsigned int langNum)
{
    assert(langNum < $nLang);

    return LangNames[langNum];
}

const char *langGet(LangIdx langIdx)
{
    unsigned int tableIdx = langIdx >> LANG_PACKED_IDX_BIT;
    
    langIdx &= LANG_IDX_MASK;

    assert(tableIdx < $tableIdx);
    assert(langIdx < Lkup[tableIdx][LangNum].lkupLen);

    return Lkup[tableIdx][LangNum].str + Lkup[tableIdx][LangNum].lkup[langIdx];
}

/* Returns the number of character set pages for the current language.
*/
int langNCharPages(void)
{
    return LangNCharPages[LangNum];
}

/* Returns the name of the given page.
*/
const char *langCharPageNameGet( unsigned ipage )
{
    if ( ipage >= LangNCharPages[LangNum] ) return (const char *)0;
    return LangCharPageNames[LangNum][ipage];
}

/*
 * Returns a sequence of characters from pressing a given key.
 * Used for alphabetic spelling of letters and numbers.
 * The returned character is the unicode representation,
 * not a utf8 byte stream.
 */
unsigned int langCharSeq(
        int keySym,             /* which key is pressed */
        int ipage,              /* which character set page is being used */
        unsigned char *state    /* next character index to return */
    )
{
    unsigned int c;

    assert(KEYSYM_0 <= keySym && keySym <= KEYSYM_STAR);
    keySym -= KEYSYM_0;
    assert(*state < $maxCharSeq);
    c = LangCharSeq[LangNum][ipage][keySym][*state];
    (*state)++;
    if ( *state >= $maxCharSeq
            || LangCharSeq[LangNum][ipage][keySym][*state] == 0 ) {
        /* wrap to start */
        *state = 0;
    }
    return c;
}

/*
 * Return the language-specific numeric decimal character as a
 * unicode character
 */
unsigned int langNumericDecimal(void)
{
    return LangNumericDecimal[LangNum];
}

/*
 * Return the language-specific numeric separator character as a
 * unicode character
 */
unsigned int langNumericSeparator(void)
{
    return LangNumericSeparator[LangNum];
}

EOF

print LANG_H <<EOF;

extern void langTypeSet(unsigned int langNum);
extern int langTypeGet(void);
extern unsigned int langTypeMaxGet(void);
extern LangIdx langTypeNameGet(unsigned int langNum);
extern const char *langGet(LangIdx langIdx);
extern unsigned int langCharSeq(int keySym, int ipage, unsigned char *state);
extern unsigned int langNumericDecimal(void);
extern unsigned int langNumericSeparator(void);
extern int langNCharPages(void);
extern const char *langCharPageNameGet( unsigned ipage );

#endif
EOF

close(LANG_H);
close(LANG_C);

exit($Errors);
